diff --git a/.github/workflows/ci-notejam.yml b/.github/workflows/ci-notejam.yml
new file mode 100644
index 000000000..1b0a7ecf4
--- /dev/null
+++ b/.github/workflows/ci-notejam.yml
@@ -0,0 +1,76 @@
+name: nodejam CI
+
+# Triggers the workflow on push or pull request events
+on: [push, pull_request]
+
+#on:
+# push:
+# branches:
+# - master
+# pull_request:
+# branches:
+# - master
+
+defaults:
+ run:
+ working-directory: .
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up JDK 8
+ uses: actions/setup-java@v2
+ with:
+ java-version: '8'
+ distribution: 'adopt'
+ - name: Cache Maven packages
+ uses: actions/cache@v2
+ with:
+ path: ~/.m2
+ key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
+ restore-keys: ${{ runner.os }}-m2
+ - name: Build with Maven
+ run: mvn --batch-mode --update-snapshots install
+ - name: 'Tar files'
+ run: tar -cvf app.tar target/*.jar
+ - uses: actions/upload-artifact@v2
+ with:
+ name: app
+ path: app.tar
+
+ docker:
+ runs-on: ubuntu-latest
+ needs: build
+# if: github.ref == 'refs/heads/master'
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2.3.4
+ # share artifact across jobs
+ - uses: actions/download-artifact@v2
+ with:
+ name: app
+ - name: 'Untar files'
+ run: mkdir -p target && tar -xvf app.tar target
+ # build + push docker img
+ # credentials needed: https://github.com/aws-actions/amazon-ecr-login
+ - name: Configure AWS credentials
+ uses: aws-actions/configure-aws-credentials@v1
+ with:
+ aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
+ aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
+ aws-region: eu-west-1
+ - name: Login to Amazon ECR
+ id: login-ecr
+ uses: aws-actions/amazon-ecr-login@v1
+ - name: Build, tag, and push image to Amazon ECR
+ env:
+ ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
+ ECR_REPOSITORY: notejam
+ IMAGE_TAG: ${{ github.sha }}
+ run: |
+ docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
+ docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
diff --git a/.gitignore b/.gitignore
index aba103733..bccac361c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -59,3 +59,9 @@ bower_components
.bak
+# maven
+target/
+
+#idea
+.idea/
+*.iml
\ No newline at end of file
diff --git a/CA_TECH b/CA_TECH
deleted file mode 100644
index 3ef2665c8..000000000
--- a/CA_TECH
+++ /dev/null
@@ -1,84 +0,0 @@
-#!groovy
-
-node('slave_CA_notejam') {
- /*stage('Clean Environment') {
- cleanWs()
- }
-
- stage('Code Check Out') {
- withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'jenkins-service-account', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) {
- sh label: '', script: '''git config --global credential.helper \'!aws --profile assume_mobile codecommit credential-helper $@\''''
- */// checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'jenkins-service-codecommit', url: 'https://git-codecommit.eu-central-1.amazonaws.com/v1/repos/ma_android-platform']]])
- /* }
- }*/
-
- /*stage('SonarQube Code Analysis') {
- echo 'Analysing code...'
- withSonarQubeEnv('SonarQube') {
- sh returnStdout: true, script: '''
- gradle wrapper
- ./gradlew sonarqube -x compileDebugAndroidTestKotlin -x compileDebugUnitTestKotlin -Dsonar.host.url=${SONAR_HOST_URL} -Dsonar.projectKey=${JOB_BASE_NAME} -Dsonar.projectName=$JOB_BASE_NAME -Dsonar.projectVersion=1.0-SNAPSHOT
- '''
- sleep 10;
- }
- }*/
-
- stage('SonarQube Code Analysis') {
- echo 'Analysing code...'
- withSonarQubeEnv('SonarQube') {
- sh returnStdout: true, script: '''
- gradle wrapper
- ./gradlew sonarqube -Dsonar.host.url=${SONAR_HOST_URL} -Dsonar.projectKey=${JOB_BASE_NAME} -Dsonar.projectName=$JOB_BASE_NAME -Dsonar.projectVersion=1.0-SNAPSHOT
- '''
- sleep 10;
- }
- }
-
- stage("SonarQube Quality-Gate Validation") {
- echo 'Quality Gate Verification...'
- timeout(time: 1, unit: 'MINUTES') {
- def qg = waitForQualityGate()
- if (qg.status != 'OK') {
- error "Pipeline aborted due to quality gate failure: ${qg.status}"
- }
- }
- }
-
- stage('Build') {
- echo 'Building ..'
- sh returnStdout: true, script: '''
- ./gradlew clean assembleDebug
- '''
- }
-
- stage('Push .APK to Nexus') {
- withEnv([
- 'NEXUS_CREDS=nexus-service-account',
- 'NEXUS_URL=artifacts.le.tnt.bank.ikano',
- 'NEXUS_REPO=maven-snapshots',
- 'NEXUS_PROTOCOL=https',
- 'NEXUS_VERSION=nexus3'
- ]) {
- filesByGlob = findFiles(glob: "app/build/outputs/apk/debug/*.apk");
- artifactPath = filesByGlob[0].path;
- artifactExists = fileExists artifactPath
- if(artifactExists) {
- nexusArtifactUploader(
- nexusVersion: NEXUS_VERSION,
- protocol: NEXUS_PROTOCOL,
- nexusUrl: NEXUS_URL,
- groupId: 'com.ikano.ipay.mobile',
- version: '1.0-SNAPSHOT',
- repository: NEXUS_REPO,
- credentialsId: NEXUS_CREDS,
- artifacts: [
- [artifactId: 'ma_android-platform',
- type: 'apk',
- file: artifactPath,
- classifier: '']
- ]
- )
- }
- }
- }
-}
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 000000000..4f1f5af6e
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,4 @@
+FROM openjdk:8-jdk-alpine
+ARG JAR_FILE=target/*.jar
+COPY ${JAR_FILE} app.jar
+ENTRYPOINT ["java","-jar","/app.jar"]
\ No newline at end of file
diff --git a/README.rst b/README.rst
index 07f28807c..2e3b57aa3 100644
--- a/README.rst
+++ b/README.rst
@@ -1,143 +1,103 @@
-*******
-Notejam
-*******
+***************
+Notejam: Spring
+***************
-**The easy way to learn web frameworks**
+Notejam application implemented using `Spring `_ framework.
-Do you know framework X and want to try framework Y?
-The easy way to start with a new framework is to compare it with frameworks you already know.
-The goal of the project is to help developers easily learn new frameworks by examples.
+Spring version: 4.2.3
-Notejam is a unified sample web application (more than just "Hello World") implemented using different server-side frameworks.
-Currently python, php, ruby and javascript frameworks are supported.
+The full stack is:
+- `Spring Boot `_ (Spring configuration)
+- `Thymeleaf `_ (View)
+- `Spring Security `_ (Security framework)
+- `Spring`_ (DI and MVC framework)
+- `Spring Data `_ (Persistence abstraction)
+- `JPA `_ (Persistence API)
+- `Hibernate `_ (JPA implementation)
-====================
-Supported frameworks
-====================
+The application is maintained by `@malkusch `_.
-**Python**
+==========================
+Installation and launching
+==========================
+-----
+Clone
+-----
-* `Django `_
-* `Flask `_
-* `Pyramid `_
+Clone the repo:
-**PHP**
+.. code-block:: bash
-* `Laravel `_
-* `Yii `_
-* `CakePHP `_
-* `Nette `_ / `Nette + Doctrine `_
-* `Symfony `_
+ $ git clone https://github.com/komarserjio/notejam YOUR_PROJECT_DIR/
-**Ruby**
+-------
+Install
+-------
-* `Padrino `_
-* `Ruby on Rails `_
+Install a `JDK `_ and `Maven `_.
-**Java**
+-------------
+Configuration
+-------------
-* `Spring `_
+The application has a password recovery process which involves sending an email.
+If you want to enable that, you have to create a local application.properties file
+and set there the property spring.mail.host to your SMTP server (e.g. spring.mail.host = smtp.example.net).
-**Javascript (node.js)**
+.. code-block:: bash
-* `Express `_
+ $ cd YOUR_PROJECT_DIR/spring/
+ $ vi application.properties
+See `MailProperties `_
+for more mail properties.
-In progress
------------
+------
+Launch
+------
-**Scala**
+Compile and launch the application:
-* Play
+.. code-block:: bash
-**Clojure**
+ $ cd YOUR_PROJECT_DIR/spring/
+ $ mvn spring-boot:run
-* Compojure
+Go to http://localhost:8080/ in your browser.
-... and more frameworks are coming soon.
+~~~~~~~~~~~~
+Localization
+~~~~~~~~~~~~
-====================
-Application overview
-====================
+This application comes with support for the languages German and English. The locale is
+determined by the Accept-Language request header. If the header is not present the
+content will be served with the default locale of the JVM. The application will not
+start if the default locale is non of the supported languages.
-Notejam is a web application which offers user to sign up/in/out and create/view/edit/delete notes.
-Notes are grouped in pads.
+---------
+Run tests
+---------
-**Screenshots**
+Run functional and unit tests:
-.. image:: https://github.com/komarserjio/notejam/blob/master/html/screenshots/1p.png
- :alt: Sign in
- :width: 400
- :align: center
- :target: https://github.com/komarserjio/notejam/tree/master/screenshots.rst
+.. code-block:: bash
-.. image:: https://github.com/komarserjio/notejam/blob/master/html/screenshots/2p.png
- :alt: All notes
- :width: 400
- :align: center
- :target: https://github.com/komarserjio/notejam/tree/master/screenshots.rst
-
-.. image:: https://github.com/komarserjio/notejam/blob/master/html/screenshots/3p.png
- :alt: New note
- :width: 400
- :align: center
- :target: https://github.com/komarserjio/notejam/tree/master/screenshots.rst
-
-See `more screenshots `_
-for look and feel.
-
-See `detailed overview `_.
-
-Typical application covers following topics:
-
-* Request/Response handling
-* Routing
-* Templates
-* Configuration
-* Authentication
-* Forms
-* Error handling
-* Database/ORM
-* Mailing
-* Functional/unit testing
-
-=============
-How to launch
-=============
-
-All implementations are SQLite based and quickly launchable by built-in web servers.
-Each implementation has instruction describing easy steps to install environment, launch and run tests.
+ $ cd YOUR_PROJECT_DIR/spring/
+ $ mvn test
============
Contribution
============
-Contribution is more than welcome!
-Contribute improvements to existing applications to help them follow best practices
-or provide new implementation for unsupported framework.
+Do you have Java/Spring experience? Help the application to follow Java and Spring best practices.
+Please send your pull requests in the ``master`` branch.
+Always prepend your commits with framework name:
-**Do you want to improve one of the existing implementations?**
+.. code-block:: bash
-Each implementation has its own README with contribution details.
-
-**Do you want to add new framework?**
+ Spring: Implement sign in functionality
Read `contribution guide `_ for details.
-
-========
-Contacts
-========
-
-* Twitter: `@komarserjio `_
-* Email: komarserjio gmail.com
-
-=======
-License
-=======
-
-MIT © Serhii Komar.
-
-See `license `_.
diff --git a/cakephp/README.rst b/cakephp/README.rst
deleted file mode 100644
index 606fd5e89..000000000
--- a/cakephp/README.rst
+++ /dev/null
@@ -1,88 +0,0 @@
-****************
-Notejam: CakePHP
-****************
-
-Notejam application implemented using `CakePHP `_ framework.
-
-CakePHP version: 3.1
-
-PHP version required: 5.5+
-
-==========================
-Installation and launching
-==========================
-
------
-Clone
------
-
-Clone the repo:
-
-.. code-block:: bash
-
- $ git clone git@github.com:komarserjio/notejam.git YOUR_PROJECT_DIR/
-
--------
-Install
--------
-
-Install `composer `_
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/cakephp/notejam
- $ curl -s https://getcomposer.org/installer | php
-
-Install dependencies
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/cakephp/notejam
- $ php composer.phar install
-
-Create database schema
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/cakephp/notejam
- $ ./bin/cake migrations migrate
-
-
-------
-Launch
-------
-
-Start built-in php web server:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/cakephp/notejam
- $ ./bin/cake server
-
-Go to http://localhost:8765 in your browser.
-
----------
-Run tests
----------
-
-Run functional tests:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/cakephp/notejam/
- $ ./vendor/bin/phpunit
-
-
-============
-Contribution
-============
-Do you have CakePHP experience? Help the app to follow PHP and CakePHP best practices.
-
-Please send your pull requests in the ``master`` branch.
-Always prepend your commits with framework name:
-
-.. code-block:: bash
-
- CakePHP: Implemented sign in functionality
-
-Read `contribution guide `_ for details.
diff --git a/cakephp/notejam/.editorconfig b/cakephp/notejam/.editorconfig
deleted file mode 100644
index 706190175..000000000
--- a/cakephp/notejam/.editorconfig
+++ /dev/null
@@ -1,18 +0,0 @@
-; This file is for unifying the coding style for different editors and IDEs.
-; More information at http://editorconfig.org
-
-root = true
-
-[*]
-indent_style = space
-indent_size = 4
-end_of_line = lf
-insert_final_newline = true
-trim_trailing_whitespace = true
-
-[*.bat]
-end_of_line = crlf
-
-[*.yml]
-indent_style = space
-indent_size = 2
diff --git a/cakephp/notejam/.gitattributes b/cakephp/notejam/.gitattributes
deleted file mode 100644
index 926a808fc..000000000
--- a/cakephp/notejam/.gitattributes
+++ /dev/null
@@ -1,36 +0,0 @@
-# Define the line ending behavior of the different file extensions
-# Set default behaviour, in case users don't have core.autocrlf set.
-* text=auto
-* text eol=lf
-
-# Explicitly declare text files we want to always be normalized and converted
-# to native line endings on checkout.
-*.php text
-*.default text
-*.ctp text
-*.sql text
-*.md text
-*.po text
-*.js text
-*.css text
-*.ini text
-*.properties text
-*.txt text
-*.xml text
-*.yml text
-.htaccess text
-
-# Declare files that will always have CRLF line endings on checkout.
-*.bat eol=crlf
-
-# Declare files that will always have LF line endings on checkout.
-*.pem eol=lf
-
-# Denote all files that are truly binary and should not be modified.
-*.png binary
-*.jpg binary
-*.gif binary
-*.ico binary
-*.mo binary
-*.pdf binary
-*.phar binary
diff --git a/cakephp/notejam/.gitignore b/cakephp/notejam/.gitignore
deleted file mode 100644
index 46bc8c5c9..000000000
--- a/cakephp/notejam/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/vendor/*
-/tmp/*
-/logs/*
-composer.lock
diff --git a/cakephp/notejam/.htaccess b/cakephp/notejam/.htaccess
deleted file mode 100644
index fc3aac4b2..000000000
--- a/cakephp/notejam/.htaccess
+++ /dev/null
@@ -1,5 +0,0 @@
-
- RewriteEngine on
- RewriteRule ^$ webroot/ [L]
- RewriteRule (.*) webroot/$1 [L]
-
\ No newline at end of file
diff --git a/cakephp/notejam/.travis.yml b/cakephp/notejam/.travis.yml
deleted file mode 100644
index b9b337904..000000000
--- a/cakephp/notejam/.travis.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-language: php
-
-sudo: false
-
-php:
- - 5.4
- - 5.5
- - 5.6
-
-before_script:
- - sh -c "composer require 'cakephp/cakephp-codesniffer:dev-master'"
- - phpenv rehash
-
-script:
- - sh -c "vendor/bin/phpcs -p --extensions=php --standard=vendor/cakephp/cakephp-codesniffer/CakePHP ./src ./tests ./config ./webroot"
-
-notifications:
- email: false
diff --git a/cakephp/notejam/bin/cake b/cakephp/notejam/bin/cake
deleted file mode 100755
index ffdacace9..000000000
--- a/cakephp/notejam/bin/cake
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env bash
-################################################################################
-#
-# Bake is a shell script for running CakePHP bake script
-#
-# CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
-# Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
-#
-# Licensed under The MIT License
-# For full copyright and license information, please see the LICENSE.txt
-# Redistributions of files must retain the above copyright notice.
-#
-# @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
-# @link http://cakephp.org CakePHP(tm) Project
-# @since 1.2.0
-# @license http://www.opensource.org/licenses/mit-license.php MIT License
-#
-################################################################################
-
-# Canonicalize by following every symlink of the given name recursively
-canonicalize() {
- NAME="$1"
- if [ -f "$NAME" ]
- then
- DIR=$(dirname -- "$NAME")
- NAME=$(cd -P "$DIR" > /dev/null && pwd -P)/$(basename -- "$NAME")
- fi
- while [ -h "$NAME" ]; do
- DIR=$(dirname -- "$NAME")
- SYM=$(readlink "$NAME")
- NAME=$(cd "$DIR" > /dev/null && cd $(dirname -- "$SYM") > /dev/null && pwd)/$(basename -- "$SYM")
- done
- echo "$NAME"
-}
-
-CONSOLE=$(dirname -- "$(canonicalize "$0")")
-APP=$(dirname "$CONSOLE")
-
-exec php "$CONSOLE"/cake.php "$@"
-exit
diff --git a/cakephp/notejam/bin/cake.bat b/cakephp/notejam/bin/cake.bat
deleted file mode 100644
index dd1d9a821..000000000
--- a/cakephp/notejam/bin/cake.bat
+++ /dev/null
@@ -1,30 +0,0 @@
-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-::
-:: Bake is a shell script for running CakePHP bake script
-::
-:: CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
-:: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
-::
-:: Licensed under The MIT License
-:: Redistributions of files must retain the above copyright notice.
-::
-:: @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
-:: @link http://cakephp.org CakePHP(tm) Project
-:: @since 2.0.0
-:: @license http://www.opensource.org/licenses/mit-license.php MIT License
-::
-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-
-:: In order for this script to work as intended, the cake\console\ folder must be in your PATH
-
-@echo.
-@echo off
-
-SET app=%0
-SET lib=%~dp0
-
-php "%lib%cake.php" %*
-
-echo.
-
-exit /B %ERRORLEVEL%
diff --git a/cakephp/notejam/bin/cake.php b/cakephp/notejam/bin/cake.php
deleted file mode 100644
index 4c7d7cef8..000000000
--- a/cakephp/notejam/bin/cake.php
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/php -q
-require->php)) {
- $minVersion = preg_replace('/([^0-9\.])/', '', $composer->require->php);
- }
-}
-if (version_compare(phpversion(), $minVersion, '<')) {
- fwrite(STDERR, sprintf("Minimum PHP version: %s. You are using: %s.\n", $minVersion, phpversion()));
- exit(-1);
-}
-
-include dirname(__DIR__) . '/config/bootstrap.php';
-
-exit(Cake\Console\ShellDispatcher::run($argv));
diff --git a/cakephp/notejam/composer.json b/cakephp/notejam/composer.json
deleted file mode 100644
index 6f1107153..000000000
--- a/cakephp/notejam/composer.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "name": "cakephp/app",
- "description": "Notejam app",
- "homepage": "https://github.com/komarserjio/notejam",
- "type": "project",
- "license": "MIT",
- "require": {
- "php": ">=5.6.0",
- "cakephp/cakephp": "^3.5",
- "mobiledetect/mobiledetectlib": "2.*",
- "cakephp/migrations": "~1.0",
- "cakephp/plugin-installer": "*"
- },
- "require-dev": {
- "psy/psysh": "@stable",
- "cakephp/debug_kit": "~3.0",
- "cakephp/bake": "~1.0",
- "phpunit/phpunit": "^5.7|^6.0"
- },
- "suggest": {
- "phpunit/phpunit": "Allows automated tests to be run without system-wide install.",
- "cakephp/cakephp-codesniffer": "Allows to check the code against the coding standards used in CakePHP."
- },
- "autoload": {
- "psr-4": {
- "App\\": "src"
- }
- },
- "autoload-dev": {
- "psr-4": {
- "App\\Test\\": "tests",
- "Cake\\Test\\": "./vendor/cakephp/cakephp/tests"
- }
- },
- "scripts": {
- "post-install-cmd": "App\\Console\\Installer::postInstall",
- "post-autoload-dump": "Cake\\Composer\\Installer\\PluginInstaller::postAutoloadDump"
- },
- "minimum-stability": "dev",
- "prefer-stable": true
-}
diff --git a/cakephp/notejam/config/Migrations/20150928200943_initial.php b/cakephp/notejam/config/Migrations/20150928200943_initial.php
deleted file mode 100644
index 7ba3488b1..000000000
--- a/cakephp/notejam/config/Migrations/20150928200943_initial.php
+++ /dev/null
@@ -1,141 +0,0 @@
-table('notes');
- $table
- ->addColumn('pad_id', 'integer', [
- 'default' => null,
- 'limit' => null,
- 'null' => true,
- ])
- ->addColumn('user_id', 'integer', [
- 'default' => null,
- 'limit' => null,
- 'null' => false,
- ])
- ->addColumn('name', 'string', [
- 'default' => null,
- 'limit' => 100,
- 'null' => false,
- ])
- ->addColumn('text', 'text', [
- 'default' => null,
- 'limit' => null,
- 'null' => false,
- ])
- ->addColumn('created_at', 'datetime', [
- 'default' => null,
- 'limit' => null,
- 'null' => false,
- ])
- ->addColumn('updated_at', 'datetime', [
- 'default' => null,
- 'limit' => null,
- 'null' => false,
- ])
- ->addIndex(
- [
- 'pad_id',
- ]
- )
- ->addIndex(
- [
- 'user_id',
- ]
- )
- ->create();
-
- $table = $this->table('pads');
- $table
- ->addColumn('name', 'string', [
- 'default' => null,
- 'limit' => 100,
- 'null' => false,
- ])
- ->addColumn('user_id', 'integer', [
- 'default' => null,
- 'limit' => null,
- 'null' => false,
- ])
- ->addIndex(
- [
- 'user_id',
- ]
- )
- ->create();
-
- $table = $this->table('users');
- $table
- ->addColumn('email', 'string', [
- 'default' => null,
- 'limit' => 75,
- 'null' => false,
- ])
- ->addColumn('password', 'string', [
- 'default' => null,
- 'limit' => 128,
- 'null' => false,
- ])
- ->create();
-
- $this->table('notes')
- ->addForeignKey(
- 'pad_id',
- 'pads',
- 'id',
- [
- 'update' => 'NO_ACTION',
- 'delete' => 'NO_ACTION'
- ]
- )
- ->addForeignKey(
- 'user_id',
- 'users',
- 'id',
- [
- 'update' => 'NO_ACTION',
- 'delete' => 'NO_ACTION'
- ]
- )
- ->update();
-
- $this->table('pads')
- ->addForeignKey(
- 'user_id',
- 'users',
- 'id',
- [
- 'update' => 'NO_ACTION',
- 'delete' => 'NO_ACTION'
- ]
- )
- ->update();
-
- }
-
- public function down()
- {
- $this->table('notes')
- ->dropForeignKey(
- 'pad_id'
- )
- ->dropForeignKey(
- 'user_id'
- )
- ->update();
-
- $this->table('pads')
- ->dropForeignKey(
- 'user_id'
- )
- ->update();
-
- $this->dropTable('notes');
- $this->dropTable('pads');
- $this->dropTable('users');
- }
-}
diff --git a/cakephp/notejam/config/app.default.php b/cakephp/notejam/config/app.default.php
deleted file mode 100644
index 52722ccaf..000000000
--- a/cakephp/notejam/config/app.default.php
+++ /dev/null
@@ -1,326 +0,0 @@
- true,
-
- /**
- * Configure basic information about the application.
- *
- * - namespace - The namespace to find app classes under.
- * - encoding - The encoding used for HTML + database connections.
- * - base - The base directory the app resides in. If false this
- * will be auto detected.
- * - dir - Name of app directory.
- * - webroot - The webroot directory.
- * - wwwRoot - The file path to webroot.
- * - baseUrl - To configure CakePHP to *not* use mod_rewrite and to
- * use CakePHP pretty URLs, remove these .htaccess
- * files:
- * /.htaccess
- * /webroot/.htaccess
- * And uncomment the baseUrl key below.
- * - fullBaseUrl - A base URL to use for absolute links.
- * - imageBaseUrl - Web path to the public images directory under webroot.
- * - cssBaseUrl - Web path to the public css directory under webroot.
- * - jsBaseUrl - Web path to the public js directory under webroot.
- * - paths - Configure paths for non class based resources. Supports the
- * `plugins`, `templates`, `locales` subkeys, which allow the definition of
- * paths for plugins, view templates and locale files respectively.
- */
- 'App' => [
- 'namespace' => 'App',
- 'encoding' => 'UTF-8',
- 'base' => false,
- 'dir' => 'src',
- 'webroot' => 'webroot',
- 'wwwRoot' => WWW_ROOT,
- // 'baseUrl' => env('SCRIPT_NAME'),
- 'fullBaseUrl' => false,
- 'imageBaseUrl' => 'img/',
- 'cssBaseUrl' => 'css/',
- 'jsBaseUrl' => 'js/',
- 'paths' => [
- 'plugins' => [ROOT . DS . 'plugins' . DS],
- 'templates' => [APP . 'Template' . DS],
- 'locales' => [APP . 'Locale' . DS],
- ],
- ],
-
- /**
- * Security and encryption configuration
- *
- * - salt - A random string used in security hashing methods.
- * The salt value is also used as the encryption key.
- * You should treat it as extremely sensitive data.
- */
- 'Security' => [
- 'salt' => '__SALT__',
- ],
-
- /**
- * Apply timestamps with the last modified time to static assets (js, css, images).
- * Will append a querystring parameter containing the time the file was modified.
- * This is useful for busting browser caches.
- *
- * Set to true to apply timestamps when debug is true. Set to 'force' to always
- * enable timestamping regardless of debug value.
- */
- 'Asset' => [
- // 'timestamp' => true,
- ],
-
- /**
- * Configure the cache adapters.
- */
- 'Cache' => [
- 'default' => [
- 'className' => 'File',
- 'path' => CACHE,
- ],
-
- /**
- * Configure the cache used for general framework caching. Path information,
- * object listings, and translation cache files are stored with this
- * configuration.
- */
- '_cake_core_' => [
- 'className' => 'File',
- 'prefix' => 'myapp_cake_core_',
- 'path' => CACHE . 'persistent/',
- 'serialize' => true,
- 'duration' => '+2 minutes',
- ],
-
- /**
- * Configure the cache for model and datasource caches. This cache
- * configuration is used to store schema descriptions, and table listings
- * in connections.
- */
- '_cake_model_' => [
- 'className' => 'File',
- 'prefix' => 'myapp_cake_model_',
- 'path' => CACHE . 'models/',
- 'serialize' => true,
- 'duration' => '+2 minutes',
- ],
- ],
-
- /**
- * Configure the Error and Exception handlers used by your application.
- *
- * By default errors are displayed using Debugger, when debug is true and logged
- * by Cake\Log\Log when debug is false.
- *
- * In CLI environments exceptions will be printed to stderr with a backtrace.
- * In web environments an HTML page will be displayed for the exception.
- * With debug true, framework errors like Missing Controller will be displayed.
- * When debug is false, framework errors will be coerced into generic HTTP errors.
- *
- * Options:
- *
- * - `errorLevel` - int - The level of errors you are interested in capturing.
- * - `trace` - boolean - Whether or not backtraces should be included in
- * logged errors/exceptions.
- * - `log` - boolean - Whether or not you want exceptions logged.
- * - `exceptionRenderer` - string - The class responsible for rendering
- * uncaught exceptions. If you choose a custom class you should place
- * the file for that class in src/Error. This class needs to implement a
- * render method.
- * - `skipLog` - array - List of exceptions to skip for logging. Exceptions that
- * extend one of the listed exceptions will also be skipped for logging.
- * E.g.:
- * `'skipLog' => ['Cake\Network\Exception\NotFoundException', 'Cake\Network\Exception\UnauthorizedException']`
- */
- 'Error' => [
- 'errorLevel' => E_ALL & ~E_DEPRECATED,
- 'exceptionRenderer' => 'Cake\Error\ExceptionRenderer',
- 'skipLog' => [],
- 'log' => true,
- 'trace' => true,
- ],
-
- /**
- * Email configuration.
- *
- * You can configure email transports and email delivery profiles here.
- *
- * By defining transports separately from delivery profiles you can easily
- * re-use transport configuration across multiple profiles.
- *
- * You can specify multiple configurations for production, development and
- * testing.
- *
- * ### Configuring transports
- *
- * Each transport needs a `className`. Valid options are as follows:
- *
- * Mail - Send using PHP mail function
- * Smtp - Send using SMTP
- * Debug - Do not send the email, just return the result
- *
- * You can add custom transports (or override existing transports) by adding the
- * appropriate file to src/Network/Email. Transports should be named
- * 'YourTransport.php', where 'Your' is the name of the transport.
- *
- * ### Configuring delivery profiles
- *
- * Delivery profiles allow you to predefine various properties about email
- * messages from your application and give the settings a name. This saves
- * duplication across your application and makes maintenance and development
- * easier. Each profile accepts a number of keys. See `Cake\Network\Email\Email`
- * for more information.
- */
- 'EmailTransport' => [
- 'default' => [
- 'className' => 'Mail',
- // The following keys are used in SMTP transports
- 'host' => 'localhost',
- 'port' => 25,
- 'timeout' => 30,
- 'username' => 'user',
- 'password' => 'secret',
- 'client' => null,
- 'tls' => null,
- ],
- ],
-
- 'Email' => [
- 'default' => [
- 'transport' => 'default',
- 'from' => 'you@localhost',
- //'charset' => 'utf-8',
- //'headerCharset' => 'utf-8',
- ],
- ],
-
- /**
- * Connection information used by the ORM to connect
- * to your application's datastores.
- * Drivers include Mysql Postgres Sqlite Sqlserver
- * See vendor\cakephp\cakephp\src\Database\Driver for complete list
- */
- 'Datasources' => [
- 'default' => [
- 'className' => 'Cake\Database\Connection',
- 'driver' => 'Cake\Database\Driver\Mysql',
- 'persistent' => false,
- 'host' => 'localhost',
- /**
- * CakePHP will use the default DB port based on the driver selected
- * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
- * the following line and set the port accordingly
- */
- //'port' => 'nonstandard_port_number',
- 'username' => 'my_app',
- 'password' => 'secret',
- 'database' => 'my_app',
- 'encoding' => 'utf8',
- 'timezone' => 'UTC',
- 'cacheMetadata' => true,
-
- /**
- * Set identifier quoting to true if you are using reserved words or
- * special characters in your table or column names. Enabling this
- * setting will result in queries built using the Query Builder having
- * identifiers quoted when creating SQL. It should be noted that this
- * decreases performance because each query needs to be traversed and
- * manipulated before being executed.
- */
- 'quoteIdentifiers' => false,
-
- /**
- * During development, if using MySQL < 5.6, uncommenting the
- * following line could boost the speed at which schema metadata is
- * fetched from the database. It can also be set directly with the
- * mysql configuration directive 'innodb_stats_on_metadata = 0'
- * which is the recommended value in production environments
- */
- //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
- ],
-
- /**
- * The test connection is used during the test suite.
- */
- 'test' => [
- 'className' => 'Cake\Database\Connection',
- 'driver' => 'Cake\Database\Driver\Mysql',
- 'persistent' => false,
- 'host' => 'localhost',
- //'port' => 'nonstandard_port_number',
- 'username' => 'my_app',
- 'password' => 'secret',
- 'database' => 'test_myapp',
- 'encoding' => 'utf8',
- 'timezone' => 'UTC',
- 'cacheMetadata' => true,
- 'quoteIdentifiers' => false,
- //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
- ],
- ],
-
- /**
- * Configures logging options
- */
- 'Log' => [
- 'debug' => [
- 'className' => 'Cake\Log\Engine\FileLog',
- 'path' => LOGS,
- 'file' => 'debug',
- 'levels' => ['notice', 'info', 'debug'],
- ],
- 'error' => [
- 'className' => 'Cake\Log\Engine\FileLog',
- 'path' => LOGS,
- 'file' => 'error',
- 'levels' => ['warning', 'error', 'critical', 'alert', 'emergency'],
- ],
- ],
-
- /**
- *
- * Session configuration.
- *
- * Contains an array of settings to use for session configuration. The
- * `defaults` key is used to define a default preset to use for sessions, any
- * settings declared here will override the settings of the default config.
- *
- * ## Options
- *
- * - `cookie` - The name of the cookie to use. Defaults to 'CAKEPHP'.
- * - `cookiePath` - The url path for which session cookie is set. Maps to the
- * `session.cookie_path` php.ini config. Defaults to base path of app.
- * - `timeout` - The time in minutes the session should be valid for.
- * Pass 0 to disable checking timeout.
- * - `defaults` - The default configuration set to use as a basis for your session.
- * There are four built-in options: php, cake, cache, database.
- * - `handler` - Can be used to enable a custom session handler. Expects an
- * array with at least the `engine` key, being the name of the Session engine
- * class to use for managing the session. CakePHP bundles the `CacheSession`
- * and `DatabaseSession` engines.
- * - `ini` - An associative array of additional ini values to set.
- *
- * The built-in `defaults` options are:
- *
- * - 'php' - Uses settings defined in your php.ini.
- * - 'cake' - Saves session files in CakePHP's /tmp directory.
- * - 'database' - Uses CakePHP's database sessions.
- * - 'cache' - Use the Cache class to save sessions.
- *
- * To define a custom session handler, save it at src/Network/Session/.php.
- * Make sure the class implements PHP's `SessionHandlerInterface` and set
- * Session.handler to
- *
- * To use database sessions, load the SQL file located at config/Schema/sessions.sql
- */
- 'Session' => [
- 'defaults' => 'php',
- ],
-];
diff --git a/cakephp/notejam/config/app.php b/cakephp/notejam/config/app.php
deleted file mode 100644
index 3c36cdb55..000000000
--- a/cakephp/notejam/config/app.php
+++ /dev/null
@@ -1,313 +0,0 @@
- true,
-
- /**
- * Configure basic information about the application.
- *
- * - namespace - The namespace to find app classes under.
- * - encoding - The encoding used for HTML + database connections.
- * - base - The base directory the app resides in. If false this
- * will be auto detected.
- * - dir - Name of app directory.
- * - webroot - The webroot directory.
- * - wwwRoot - The file path to webroot.
- * - baseUrl - To configure CakePHP to *not* use mod_rewrite and to
- * use CakePHP pretty URLs, remove these .htaccess
- * files:
- * /.htaccess
- * /webroot/.htaccess
- * And uncomment the baseUrl key below.
- * - fullBaseUrl - A base URL to use for absolute links.
- * - imageBaseUrl - Web path to the public images directory under webroot.
- * - cssBaseUrl - Web path to the public css directory under webroot.
- * - jsBaseUrl - Web path to the public js directory under webroot.
- * - paths - Configure paths for non class based resources. Supports the
- * `plugins`, `templates`, `locales` subkeys, which allow the definition of
- * paths for plugins, view templates and locale files respectively.
- */
- 'App' => [
- 'namespace' => 'App',
- 'encoding' => 'UTF-8',
- 'base' => false,
- 'dir' => 'src',
- 'webroot' => 'webroot',
- 'wwwRoot' => WWW_ROOT,
- // 'baseUrl' => env('SCRIPT_NAME'),
- 'fullBaseUrl' => false,
- 'imageBaseUrl' => 'img/',
- 'cssBaseUrl' => 'css/',
- 'jsBaseUrl' => 'js/',
- 'paths' => [
- 'plugins' => [ROOT . DS . 'plugins' . DS],
- 'templates' => [APP . 'Template' . DS],
- 'locales' => [APP . 'Locale' . DS],
- ],
- ],
-
- /**
- * Security and encryption configuration
- *
- * - salt - A random string used in security hashing methods.
- * The salt value is also used as the encryption key.
- * You should treat it as extremely sensitive data.
- */
- 'Security' => [
- 'salt' => '5a7f2d28c26b43c1eca92cd2fabb1a18bbba049f43799f6399f701a0c3f074d3',
- ],
-
- /**
- * Apply timestamps with the last modified time to static assets (js, css, images).
- * Will append a querystring parameter containing the time the file was modified.
- * This is useful for busting browser caches.
- *
- * Set to true to apply timestamps when debug is true. Set to 'force' to always
- * enable timestamping regardless of debug value.
- */
- 'Asset' => [
- // 'timestamp' => true,
- ],
-
- /**
- * Configure the cache adapters.
- */
- 'Cache' => [
- 'default' => [
- 'className' => 'File',
- 'path' => CACHE,
- ],
-
- /**
- * Configure the cache used for general framework caching. Path information,
- * object listings, and translation cache files are stored with this
- * configuration.
- */
- '_cake_core_' => [
- 'className' => 'File',
- 'prefix' => 'myapp_cake_core_',
- 'path' => CACHE . 'persistent/',
- 'serialize' => true,
- 'duration' => '+2 minutes',
- ],
-
- /**
- * Configure the cache for model and datasource caches. This cache
- * configuration is used to store schema descriptions, and table listings
- * in connections.
- */
- '_cake_model_' => [
- 'className' => 'File',
- 'prefix' => 'myapp_cake_model_',
- 'path' => CACHE . 'models/',
- 'serialize' => true,
- 'duration' => '+2 minutes',
- ],
- ],
-
- /**
- * Configure the Error and Exception handlers used by your application.
- *
- * By default errors are displayed using Debugger, when debug is true and logged
- * by Cake\Log\Log when debug is false.
- *
- * In CLI environments exceptions will be printed to stderr with a backtrace.
- * In web environments an HTML page will be displayed for the exception.
- * With debug true, framework errors like Missing Controller will be displayed.
- * When debug is false, framework errors will be coerced into generic HTTP errors.
- *
- * Options:
- *
- * - `errorLevel` - int - The level of errors you are interested in capturing.
- * - `trace` - boolean - Whether or not backtraces should be included in
- * logged errors/exceptions.
- * - `log` - boolean - Whether or not you want exceptions logged.
- * - `exceptionRenderer` - string - The class responsible for rendering
- * uncaught exceptions. If you choose a custom class you should place
- * the file for that class in src/Error. This class needs to implement a
- * render method.
- * - `skipLog` - array - List of exceptions to skip for logging. Exceptions that
- * extend one of the listed exceptions will also be skipped for logging.
- * E.g.:
- * `'skipLog' => ['Cake\Network\Exception\NotFoundException', 'Cake\Network\Exception\UnauthorizedException']`
- */
- 'Error' => [
- 'errorLevel' => E_ALL & ~E_DEPRECATED,
- 'exceptionRenderer' => 'Cake\Error\ExceptionRenderer',
- 'skipLog' => [],
- 'log' => true,
- 'trace' => true,
- ],
-
- /**
- * Email configuration.
- *
- * You can configure email transports and email delivery profiles here.
- *
- * By defining transports separately from delivery profiles you can easily
- * re-use transport configuration across multiple profiles.
- *
- * You can specify multiple configurations for production, development and
- * testing.
- *
- * ### Configuring transports
- *
- * Each transport needs a `className`. Valid options are as follows:
- *
- * Mail - Send using PHP mail function
- * Smtp - Send using SMTP
- * Debug - Do not send the email, just return the result
- *
- * You can add custom transports (or override existing transports) by adding the
- * appropriate file to src/Network/Email. Transports should be named
- * 'YourTransport.php', where 'Your' is the name of the transport.
- *
- * ### Configuring delivery profiles
- *
- * Delivery profiles allow you to predefine various properties about email
- * messages from your application and give the settings a name. This saves
- * duplication across your application and makes maintenance and development
- * easier. Each profile accepts a number of keys. See `Cake\Network\Email\Email`
- * for more information.
- */
- 'EmailTransport' => [
- 'default' => [
- 'className' => 'Mail',
- // The following keys are used in SMTP transports
- 'host' => 'localhost',
- 'port' => 25,
- 'timeout' => 30,
- 'username' => 'user',
- 'password' => 'secret',
- 'client' => null,
- 'tls' => null,
- ],
- ],
-
- 'Email' => [
- 'default' => [
- 'transport' => 'default',
- 'from' => 'you@localhost',
- //'charset' => 'utf-8',
- //'headerCharset' => 'utf-8',
- ],
- ],
-
- /**
- * Connection information used by the ORM to connect
- * to your application's datastores.
- * Drivers include Mysql Postgres Sqlite Sqlserver
- * See vendor\cakephp\cakephp\src\Database\Driver for complete list
- */
- 'Datasources' => [
- 'default' => [
- 'className' => 'Cake\Database\Connection',
- 'driver' => 'Cake\Database\Driver\Sqlite',
- 'persistent' => false,
- 'database' => 'notejam.db',
- 'encoding' => 'utf8',
- 'timezone' => 'UTC',
- 'cacheMetadata' => true,
-
- /**
- * Set identifier quoting to true if you are using reserved words or
- * special characters in your table or column names. Enabling this
- * setting will result in queries built using the Query Builder having
- * identifiers quoted when creating SQL. It should be noted that this
- * decreases performance because each query needs to be traversed and
- * manipulated before being executed.
- */
- 'quoteIdentifiers' => false,
-
- /**
- * During development, if using MySQL < 5.6, uncommenting the
- * following line could boost the speed at which schema metadata is
- * fetched from the database. It can also be set directly with the
- * mysql configuration directive 'innodb_stats_on_metadata = 0'
- * which is the recommended value in production environments
- */
- //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
- ],
-
- /**
- * The test connection is used during the test suite.
- */
- 'test' => [
- 'className' => 'Cake\Database\Connection',
- 'driver' => 'Cake\Database\Driver\Sqlite',
- 'persistent' => false,
- 'database' => 'tests/notejam.db',
- 'encoding' => 'utf8',
- 'timezone' => 'UTC',
- 'cacheMetadata' => true,
- 'quoteIdentifiers' => false,
- //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
- ],
- ],
-
- /**
- * Configures logging options
- */
- 'Log' => [
- 'debug' => [
- 'className' => 'Cake\Log\Engine\FileLog',
- 'path' => LOGS,
- 'file' => 'debug',
- 'levels' => ['notice', 'info', 'debug'],
- ],
- 'error' => [
- 'className' => 'Cake\Log\Engine\FileLog',
- 'path' => LOGS,
- 'file' => 'error',
- 'levels' => ['warning', 'error', 'critical', 'alert', 'emergency'],
- ],
- ],
-
- /**
- *
- * Session configuration.
- *
- * Contains an array of settings to use for session configuration. The
- * `defaults` key is used to define a default preset to use for sessions, any
- * settings declared here will override the settings of the default config.
- *
- * ## Options
- *
- * - `cookie` - The name of the cookie to use. Defaults to 'CAKEPHP'.
- * - `cookiePath` - The url path for which session cookie is set. Maps to the
- * `session.cookie_path` php.ini config. Defaults to base path of app.
- * - `timeout` - The time in minutes the session should be valid for.
- * Pass 0 to disable checking timeout.
- * - `defaults` - The default configuration set to use as a basis for your session.
- * There are four built-in options: php, cake, cache, database.
- * - `handler` - Can be used to enable a custom session handler. Expects an
- * array with at least the `engine` key, being the name of the Session engine
- * class to use for managing the session. CakePHP bundles the `CacheSession`
- * and `DatabaseSession` engines.
- * - `ini` - An associative array of additional ini values to set.
- *
- * The built-in `defaults` options are:
- *
- * - 'php' - Uses settings defined in your php.ini.
- * - 'cake' - Saves session files in CakePHP's /tmp directory.
- * - 'database' - Uses CakePHP's database sessions.
- * - 'cache' - Use the Cache class to save sessions.
- *
- * To define a custom session handler, save it at src/Network/Session/.php.
- * Make sure the class implements PHP's `SessionHandlerInterface` and set
- * Session.handler to
- *
- * To use database sessions, load the SQL file located at config/Schema/sessions.sql
- */
- 'Session' => [
- 'defaults' => 'php',
- ],
-];
diff --git a/cakephp/notejam/config/bootstrap.php b/cakephp/notejam/config/bootstrap.php
deleted file mode 100644
index 62d662ece..000000000
--- a/cakephp/notejam/config/bootstrap.php
+++ /dev/null
@@ -1,202 +0,0 @@
-getMessage() . "\n");
-}
-
-// Load an environment local configuration file.
-// You can use a file like app_local.php to provide local overrides to your
-// shared configuration.
-//Configure::load('app_local', 'default');
-
-// When debug = false the metadata cache should last
-// for a very very long time, as we don't want
-// to refresh the cache while users are doing requests.
-if (!Configure::read('debug')) {
- Configure::write('Cache._cake_model_.duration', '+1 years');
- Configure::write('Cache._cake_core_.duration', '+1 years');
-}
-
-/**
- * Set server timezone to UTC. You can change it to another timezone of your
- * choice but using UTC makes time calculations / conversions easier.
- */
-date_default_timezone_set('UTC');
-
-/**
- * Configure the mbstring extension to use the correct encoding.
- */
-mb_internal_encoding(Configure::read('App.encoding'));
-
-/**
- * Set the default locale. This controls how dates, number and currency is
- * formatted and sets the default language to use for translations.
- */
-ini_set('intl.default_locale', 'en_US');
-
-/**
- * Register application error and exception handlers.
- */
-$isCli = php_sapi_name() === 'cli';
-if ($isCli) {
- (new ConsoleErrorHandler(Configure::read('Error')))->register();
-} else {
- (new ErrorHandler(Configure::read('Error')))->register();
-}
-
-// Include the CLI bootstrap overrides.
-if ($isCli) {
- require __DIR__ . '/bootstrap_cli.php';
-}
-
-/**
- * Set the full base URL.
- * This URL is used as the base of all absolute links.
- *
- * If you define fullBaseUrl in your config file you can remove this.
- */
-if (!Configure::read('App.fullBaseUrl')) {
- $s = null;
- if (env('HTTPS')) {
- $s = 's';
- }
-
- $httpHost = env('HTTP_HOST');
- if (isset($httpHost)) {
- Configure::write('App.fullBaseUrl', 'http' . $s . '://' . $httpHost);
- }
- unset($httpHost, $s);
-}
-
-Cache::config(Configure::consume('Cache'));
-ConnectionManager::config(Configure::consume('Datasources'));
-Email::configTransport(Configure::consume('EmailTransport'));
-Email::config(Configure::consume('Email'));
-Log::config(Configure::consume('Log'));
-Security::salt(Configure::consume('Security.salt'));
-
-/**
- * The default crypto extension in 3.0 is OpenSSL.
- * If you are migrating from 2.x uncomment this code to
- * use a more compatible Mcrypt based implementation
- */
-// Security::engine(new \Cake\Utility\Crypto\Mcrypt());
-
-/**
- * Setup detectors for mobile and tablet.
- */
-Request::addDetector('mobile', function ($request) {
- $detector = new \Detection\MobileDetect();
- return $detector->isMobile();
-});
-Request::addDetector('tablet', function ($request) {
- $detector = new \Detection\MobileDetect();
- return $detector->isTablet();
-});
-
-/**
- * Custom Inflector rules, can be set to correctly pluralize or singularize
- * table, model, controller names or whatever other string is passed to the
- * inflection functions.
- *
- * Inflector::rules('plural', ['/^(inflect)or$/i' => '\1ables']);
- * Inflector::rules('irregular', ['red' => 'redlings']);
- * Inflector::rules('uninflected', ['dontinflectme']);
- * Inflector::rules('transliteration', ['/å/' => 'aa']);
- */
-
-/**
- * Plugins need to be loaded manually, you can either load them one by one or all of them in a single call
- * Uncomment one of the lines below, as you need. make sure you read the documentation on Plugin to use more
- * advanced ways of loading plugins
- *
- * Plugin::loadAll(); // Loads all plugins at once
- * Plugin::load('Migrations'); //Loads a single plugin named Migrations
- *
- */
-
-Plugin::load('Migrations');
-
-// Only try to load DebugKit in development mode
-// Debug Kit should not be installed on a production system
-if (Configure::read('debug')) {
- Plugin::load('DebugKit', ['bootstrap' => true]);
-}
-
-/**
- * Connect middleware/dispatcher filters.
- */
-DispatcherFactory::add('Asset');
-DispatcherFactory::add('Routing');
-DispatcherFactory::add('ControllerFactory');
-
-/**
- * Enable default locale format parsing.
- * This is needed for matching the auto-localized string output of Time() class when parsing dates.
- */
-Type::build('datetime')->useLocaleParser();
diff --git a/cakephp/notejam/config/bootstrap_cli.php b/cakephp/notejam/config/bootstrap_cli.php
deleted file mode 100644
index 13cf979fa..000000000
--- a/cakephp/notejam/config/bootstrap_cli.php
+++ /dev/null
@@ -1,32 +0,0 @@
-connect('/', ['controller' => 'Notes', 'action' => 'index'], ['_name' => 'index']);
-
- $routes->connect('/signup', ['controller' => 'Users', 'action' => 'signup'], ['_name' => 'signup']);
- $routes->connect('/signin', ['controller' => 'Users', 'action' => 'signin'], ['_name' => 'signin']);
- $routes->connect('/signout', ['controller' => 'Users', 'action' => 'signout'], ['_name' => 'signout']);
- $routes->connect('/settings', ['controller' => 'Users', 'action' => 'settings'], ['_name' => 'settings']);
- $routes->connect('/forgot-password', ['controller' => 'Users', 'action' => 'forgotpassword'], ['_name' => 'forgot_password']);
-
-
- $routes->scope('/pads', ['controller' => 'Pads'], function($routes) {
- $routes->connect('/create', ['controller' => 'Pads', 'action' => 'create'], ['_name' => 'create_pad']);
- $routes->connect('/:id/edit', ['controller' => 'Pads', 'action' => 'edit'], ['id' => '\d+', 'pass' => ['id'], '_name' => 'edit_pad']);
- $routes->connect('/:id/delete', ['controller' => 'Pads', 'action' => 'delete'], ['id' => '\d+', 'pass' => ['id'], '_name' => 'delete_pad']);
- $routes->connect('/:id', ['controller' => 'Pads', 'action' => 'view'], ['id' => '\d+', 'pass' => ['id'], '_name' => 'view_pad']);
- });
-
- $routes->scope('/notes', ['controller' => 'Notes'], function($routes) {
- $routes->connect('/create', ['controller' => 'Notes', 'action' => 'create'], ['_name' => 'create_note']);
- $routes->connect('/:id/edit', ['controller' => 'Notes', 'action' => 'edit'], ['id' => '\d+', 'pass' => ['id'], '_name' => 'edit_note']);
- $routes->connect('/:id', ['controller' => 'Notes', 'action' => 'view'], ['id' => '\d+', 'pass' => ['id'], '_name' => 'view_note']);
- $routes->connect('/:id/delete', ['controller' => 'Notes', 'action' => 'delete'], ['id' => '\d+', 'pass' => ['id'], '_name' => 'delete_note']);
- });
-});
-
-/**
- * Load all plugin routes. See the Plugin documentation on
- * how to customize the loading of plugin routes.
- */
-Plugin::routes();
diff --git a/cakephp/notejam/config/schema/i18n.sql b/cakephp/notejam/config/schema/i18n.sql
deleted file mode 100644
index 66a42bd19..000000000
--- a/cakephp/notejam/config/schema/i18n.sql
+++ /dev/null
@@ -1,27 +0,0 @@
-# $Id$
-#
-# Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
-#
-# Licensed under The MIT License
-# For full copyright and license information, please see the LICENSE.txt
-# Redistributions of files must retain the above copyright notice.
-# MIT License (http://www.opensource.org/licenses/mit-license.php)
-
-CREATE TABLE i18n (
- id int(10) NOT NULL auto_increment,
- locale varchar(6) NOT NULL,
- model varchar(255) NOT NULL,
- foreign_key int(10) NOT NULL,
- field varchar(255) NOT NULL,
- content mediumtext,
- PRIMARY KEY (id),
-# UNIQUE INDEX I18N_LOCALE_FIELD(locale, model, foreign_key, field),
-# INDEX I18N_LOCALE_ROW(locale, model, foreign_key),
-# INDEX I18N_LOCALE_MODEL(locale, model),
-# INDEX I18N_FIELD(model, foreign_key, field),
-# INDEX I18N_ROW(model, foreign_key),
- INDEX locale (locale),
- INDEX model (model),
- INDEX row_id (foreign_key),
- INDEX field (field)
-);
\ No newline at end of file
diff --git a/cakephp/notejam/config/schema/sessions.sql b/cakephp/notejam/config/schema/sessions.sql
deleted file mode 100644
index 434e1aa1c..000000000
--- a/cakephp/notejam/config/schema/sessions.sql
+++ /dev/null
@@ -1,17 +0,0 @@
-# $Id$
-#
-# Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
-# 1785 E. Sahara Avenue, Suite 490-204
-# Las Vegas, Nevada 89104
-#
-# Licensed under The MIT License
-# For full copyright and license information, please see the LICENSE.txt
-# Redistributions of files must retain the above copyright notice.
-# MIT License (http://www.opensource.org/licenses/mit-license.php)
-
-CREATE TABLE sessions (
- id varchar(40) NOT NULL default '',
- data text,
- expires INT(11) NOT NULL,
- PRIMARY KEY (id)
-);
diff --git a/cakephp/notejam/index.php b/cakephp/notejam/index.php
deleted file mode 100644
index fc5e39ccb..000000000
--- a/cakephp/notejam/index.php
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- ./tests/TestCase
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/cakephp/notejam/src/Console/Installer.php b/cakephp/notejam/src/Console/Installer.php
deleted file mode 100644
index 06d1115f7..000000000
--- a/cakephp/notejam/src/Console/Installer.php
+++ /dev/null
@@ -1,192 +0,0 @@
-getIO();
-
- $rootDir = dirname(dirname(__DIR__));
-
- static::createAppConfig($rootDir, $io);
- static::createWritableDirectories($rootDir, $io);
-
- // ask if the permissions should be changed
- if ($io->isInteractive()) {
- $validator = function ($arg) {
- if (in_array($arg, ['Y', 'y', 'N', 'n'])) {
- return $arg;
- }
- throw new Exception('This is not a valid answer. Please choose Y or n.');
- };
- $setFolderPermissions = $io->askAndValidate(
- 'Set Folder Permissions ? (Default to Y) [Y,n ]? ',
- $validator,
- 10,
- 'Y'
- );
-
- if (in_array($setFolderPermissions, ['Y', 'y'])) {
- static::setFolderPermissions($rootDir, $io);
- }
- } else {
- static::setFolderPermissions($rootDir, $io);
- }
-
- static::setSecuritySalt($rootDir, $io);
-
- if (class_exists('\Cake\Codeception\Console\Installer')) {
- \Cake\Codeception\Console\Installer::customizeCodeceptionBinary($event);
- }
- }
-
- /**
- * Create the config/app.php file if it does not exist.
- *
- * @param string $dir The application's root directory.
- * @param \Composer\IO\IOInterface $io IO interface to write to console.
- * @return void
- */
- public static function createAppConfig($dir, $io)
- {
- $appConfig = $dir . '/config/app.php';
- $defaultConfig = $dir . '/config/app.default.php';
- if (!file_exists($appConfig)) {
- copy($defaultConfig, $appConfig);
- $io->write('Created `config/app.php` file');
- }
- }
-
- /**
- * Create the `logs` and `tmp` directories.
- *
- * @param string $dir The application's root directory.
- * @param \Composer\IO\IOInterface $io IO interface to write to console.
- * @return void
- */
- public static function createWritableDirectories($dir, $io)
- {
- $paths = [
- 'logs',
- 'tmp',
- 'tmp/cache',
- 'tmp/cache/models',
- 'tmp/cache/persistent',
- 'tmp/cache/views',
- 'tmp/sessions',
- 'tmp/tests'
- ];
-
- foreach ($paths as $path) {
- $path = $dir . '/' . $path;
- if (!file_exists($path)) {
- mkdir($path);
- $io->write('Created `' . $path . '` directory');
- }
- }
- }
-
- /**
- * Set globally writable permissions on the "tmp" and "logs" directory.
- *
- * This is not the most secure default, but it gets people up and running quickly.
- *
- * @param string $dir The application's root directory.
- * @param \Composer\IO\IOInterface $io IO interface to write to console.
- * @return void
- */
- public static function setFolderPermissions($dir, $io)
- {
- // Change the permissions on a path and output the results.
- $changePerms = function ($path, $perms, $io) {
- // Get current permissions in decimal format so we can bitmask it.
- $currentPerms = octdec(substr(sprintf('%o', fileperms($path)), -4));
- if (($currentPerms & $perms) == $perms) {
- return;
- }
-
- $res = chmod($path, $currentPerms | $perms);
- if ($res) {
- $io->write('Permissions set on ' . $path);
- } else {
- $io->write('Failed to set permissions on ' . $path);
- }
- };
-
- $walker = function ($dir, $perms, $io) use (&$walker, $changePerms) {
- $files = array_diff(scandir($dir), ['.', '..']);
- foreach ($files as $file) {
- $path = $dir . '/' . $file;
-
- if (!is_dir($path)) {
- continue;
- }
-
- $changePerms($path, $perms, $io);
- $walker($path, $perms, $io);
- }
- };
-
- $worldWritable = bindec('0000000111');
- $walker($dir . '/tmp', $worldWritable, $io);
- $changePerms($dir . '/tmp', $worldWritable, $io);
- $changePerms($dir . '/logs', $worldWritable, $io);
- }
-
- /**
- * Set the security.salt value in the application's config file.
- *
- * @param string $dir The application's root directory.
- * @param \Composer\IO\IOInterface $io IO interface to write to console.
- * @return void
- */
- public static function setSecuritySalt($dir, $io)
- {
- $config = $dir . '/config/app.php';
- $content = file_get_contents($config);
-
- $newKey = hash('sha256', $dir . php_uname() . microtime(true));
- $content = str_replace('__SALT__', $newKey, $content, $count);
-
- if ($count == 0) {
- $io->write('No Security.salt placeholder to replace.');
- return;
- }
-
- $result = file_put_contents($config, $content);
- if ($result) {
- $io->write('Updated Security.salt value in config/app.php');
- return;
- }
- $io->write('Unable to update Security.salt value.');
- }
-}
diff --git a/cakephp/notejam/src/Controller/AppController.php b/cakephp/notejam/src/Controller/AppController.php
deleted file mode 100644
index 2207fda8d..000000000
--- a/cakephp/notejam/src/Controller/AppController.php
+++ /dev/null
@@ -1,88 +0,0 @@
-loadComponent('Flash');
- $this->loadComponent('Auth', [
- 'authenticate' => [
- 'Form' => [
- 'fields' => [
- 'username' => 'email',
- 'password' => 'password'
- ]
- ]
- ],
- 'loginAction' => [
- 'controller' => 'Users',
- 'action' => 'signin'
- ]
- ]);
- $this->Auth->allow(['signup', 'forgotpassword']);
- }
-
- /**
- * Get authenticated user
- *
- * @return App\Model\Entity\User
- */
- protected function getUser()
- {
- $id = $this->request->session()->read('Auth.User.id');
- return TableRegistry::get('Users')->get($id, [
- 'contain' => ['Pads', 'Notes']
- ]);
- }
-
- /**
- * Build order statetment
- *
- * @param string $order Order param
- * @return array
- */
- public function buildOrderBy($order)
- {
- $config = [
- 'name' => ['Notes.name' => 'ASC'],
- '-name' => ['Notes.name' => 'DESC'],
- 'updated_at' => ['Notes.updated_at' => 'ASC'],
- '-updated_at' => ['Notes.updated_at' => 'DESC'],
- ];
- return $config[$order ? $order : 'updated_at'];
- }
-}
diff --git a/cakephp/notejam/src/Controller/NotesController.php b/cakephp/notejam/src/Controller/NotesController.php
deleted file mode 100644
index 18740fc06..000000000
--- a/cakephp/notejam/src/Controller/NotesController.php
+++ /dev/null
@@ -1,138 +0,0 @@
-viewBuilder()->layout('user');
- }
-
- /**
- * Index method
- *
- * @return void
- */
- public function index()
- {
- $this->set(
- 'notes',
- $this->Notes->find('all', ['contain' => 'Pads'])
- ->where(['Notes.user_id' => $this->getUser()->id])
- ->order($this->buildOrderBy($this->request->query('order')))
- );
- }
-
- /**
- * View note
- *
- * @param string|null $id Note id.
- * @return void
- * @throws \Cake\Network\Exception\NotFoundException When record not found.
- */
- public function view($id = null)
- {
- $note = $this->getNote($id);
- $this->set('note', $note);
- }
-
- /**
- * Create note action
- *
- * @return void Redirects on successful add, renders view otherwise.
- */
- public function create()
- {
- $note = $this->Notes->newEntity();
- if ($this->request->is('post')) {
- $note = $this->Notes->patchEntity($note, array_merge(
- $this->request->data,
- ['user_id' => $this->getUser()->id]
- ));
- if ($this->Notes->save($note)) {
- $this->Flash->success(__('The note has been saved.'));
- return $this->redirect(['action' => 'index']);
- } else {
- $this->Flash->error(__('The note could not be saved. Please, try again.'));
- }
- }
- // current pad
- $pad = $this->request->query('pad');
-
- $pads = collection($this->getUser()->pads)->combine('id', 'name')->toArray();
- $this->set(compact('note', 'pads', 'pad'));
- }
-
-
- /**
- * Edit note
- *
- * @param string|null $id Note id.
- * @return void Redirects on successful edit, renders view otherwise.
- * @throws \Cake\Network\Exception\NotFoundException When record not found.
- */
- public function edit($id = null)
- {
- $note = $this->getNote($id);
- if ($this->request->is(['patch', 'post', 'put'])) {
- $note = $this->Notes->patchEntity($note, $this->request->data);
- if ($this->Notes->save($note)) {
- $this->Flash->success(__('The note has been saved.'));
- return $this->redirect(['action' => 'view', 'id' => $note->id]);
- } else {
- $this->Flash->error(__('The note could not be saved. Please, try again.'));
- }
- }
- $pads = collection($this->getUser()->pads)->combine('id', 'name')->toArray();
- $this->set(compact('note', 'pads'));
- }
-
- /**
- * Delete method
- *
- * @param string|null $id Note id.
- * @return void Redirects to index.
- * @throws \Cake\Network\Exception\NotFoundException When record not found.
- */
- public function delete($id = null)
- {
- $note = $this->getNote($id);
- if ($this->request->is('post')) {
- $this->Notes->delete($note);
- $this->Flash->success(__('The note has been deleted.'));
- return $this->redirect(['action' => 'index']);
- }
- $this->set(compact('note'));
- }
-
- /**
- * Get note
- *
- * @param int $id Note id
- * @return Note
- */
- protected function getNote($id)
- {
- return TableRegistry::get('Notes')->find()
- ->contain(['Pads', 'Users'])
- ->where(['Notes.id' => $id])
- ->where(['Notes.user_id' => $this->getUser()->id])
- ->firstOrFail();
- }
-}
diff --git a/cakephp/notejam/src/Controller/PadsController.php b/cakephp/notejam/src/Controller/PadsController.php
deleted file mode 100644
index 246b98430..000000000
--- a/cakephp/notejam/src/Controller/PadsController.php
+++ /dev/null
@@ -1,121 +0,0 @@
-viewBuilder()->layout('user');
- }
-
- /**
- * View pad
- *
- * @param string|null $id Pad id.
- * @return void
- * @throws \Cake\Network\Exception\NotFoundException When record not found.
- */
- public function view($id = null)
- {
- $pad = $this->getPad($id);
- $notes = TableRegistry::get('Notes')->find('all', ['contain' => 'Pads'])
- ->where(['Notes.pad_id' => $id])
- ->where(['Notes.user_id' => $this->getUser()->id])
- ->order($this->buildOrderBy($this->request->query('order')));
-
- $this->set('pad', $pad);
- $this->set('notes', $notes);
- }
-
- /**
- * Create a pad
- *
- * @return void Redirects on successful add, renders view otherwise.
- */
- public function create()
- {
- $pad = $this->Pads->newEntity();
- if ($this->request->is('post')) {
- $pad = $this->Pads->patchEntity($pad, array_merge(
- $this->request->data,
- ['user_id' => $this->Auth->user('id')]
- ));
- if ($this->Pads->save($pad)) {
- $this->Flash->success(__('The pad has been created.'));
- return $this->redirect(['action' => 'view', 'id' => $pad->id]);
- }
- }
- $this->set(compact('pad'));
- }
-
- /**
- * Edit pad
- *
- * @param string|null $id Pad id.
- * @return void Redirects on successful edit, renders view otherwise.
- * @throws \Cake\Network\Exception\NotFoundException When record not found.
- */
- public function edit($id = null)
- {
- $pad = $this->getPad($id);
- if ($this->request->is(['patch', 'post', 'put'])) {
- $pad = $this->Pads->patchEntity($pad, $this->request->data);
- if ($this->Pads->save($pad)) {
- $this->Flash->success(__('The pad has been saved.'));
- return $this->redirect(['action' => 'view', 'id' => $pad->id]);
- } else {
- $this->Flash->error(__('The pad could not be saved. Please, try again.'));
- }
- }
- $this->set(compact('pad'));
- }
-
- /**
- * Delete method
- *
- * @param string|null $id Pad id.
- * @return void Redirects to index.
- * @throws \Cake\Network\Exception\NotFoundException When record not found.
- */
- public function delete($id = null)
- {
- $pad = $this->getPad($id);
- if ($this->request->is('post')) {
- $this->Pads->delete($pad);
- $this->Flash->success(__('The pad has been deleted.'));
- return $this->redirect(['_name' => 'index']);
- }
- $this->set(compact('pad'));
- }
-
- /**
- * Get pad
- *
- * @param int $id Pad id
- * @return Pad
- */
- protected function getPad($id)
- {
- return TableRegistry::get('Pads')->find()
- ->contain(['Users'])
- ->where(['Pads.id' => $id])
- ->where(['Pads.user_id' => $this->getUser()->id])
- ->firstOrFail();
- }
-}
diff --git a/cakephp/notejam/src/Controller/UsersController.php b/cakephp/notejam/src/Controller/UsersController.php
deleted file mode 100644
index 00b1afb37..000000000
--- a/cakephp/notejam/src/Controller/UsersController.php
+++ /dev/null
@@ -1,145 +0,0 @@
-viewBuilder()->layout('anonymous');
- }
-
- /**
- * Signup action
- *
- * @return void Redirects on successful signup, renders errors otherwise.
- */
- public function signup()
- {
- $user = $this->Users->newEntity();
- if ($this->request->is('post')) {
- $user = $this->Users->patchEntity($user, $this->request->data);
- if ($this->Users->save($user)) {
- $this->Flash->success(__('Now you can signin'));
- return $this->redirect(['action' => 'signin']);
- } else {
- $this->Flash->error(__('The user could not be saved. Please, try again.'));
- }
- }
- $this->set(compact('user'));
- }
-
- /**
- * Signin action
- *
- * @return void Redirects on successful signup, renders errors otherwise.
- */
- public function signin()
- {
- if ($this->request->is('post')) {
- $user = $this->Auth->identify();
- if ($user) {
- $this->Auth->setUser($user);
- return $this->redirect($this->Auth->redirectUrl());
- }
- $this->Flash->error('Your username or password is incorrect.');
- }
- }
-
- /**
- * Sign out action
- *
- * @return void Redirects on successful signin
- */
- public function signout()
- {
- return $this->redirect($this->Auth->logout());
- }
-
- /**
- * Account settings action
- *
- * @return void
- */
- public function settings()
- {
- $settings = new SettingsForm();
- if ($this->request->is('post') &&
- $settings->validate($this->request->data)) {
-
- $user = $this->getUser();
- if ($user->checkPassword($this->request->data['current_password'])) {
- $user->password = $this->request->data['new_password'];
- $this->Users->save($user);
- $this->Flash->success('Password is successfully changed.');
- return $this->redirect(['_name' => 'index']);
- }
- $this->Flash->error('Current password is not correct.');
- }
- $this->set(compact('settings'));
- }
-
- /**
- * Forgot password action
- *
- * @return void
- */
- public function forgotPassword()
- {
- $form = new ForgotPasswordForm();
- if ($this->request->is('post') &&
- $form->validate($this->request->data)) {
-
- $user = $this->Users->find()
- ->where(['email' => $this->request->data['email']])
- ->first();
- if ($user) {
- $this->resetPassword($user);
- $this->Flash->success('New temp password is sent to your inbox.');
- return $this->redirect(['_name' => 'index']);
- }
- $this->Flash->error('User with given email does not exist.');
- }
- $this->set(compact('form'));
- }
-
- /**
- * Reset user's password
- *
- * @param App\Model\Entity\User $user User
- * @return void
- */
- protected function resetPassword($user)
- {
- // primitive way to generate temporary password
- $user->password = $password = substr(
- sha1(time() . rand() . Configure::read('Security.salt')), 0, 8
- );
- $this->Users->save($user);
-
- Email::deliver(
- $user->email,
- "New notejam password",
- "Your new temporary password is {$password}.
- We recommend you to change it after signing in.",
- ["from" => "noreply@notejamapp.com", "transport" => "default"]
- );
- }
-}
diff --git a/cakephp/notejam/src/Form/ForgotPasswordForm.php b/cakephp/notejam/src/Form/ForgotPasswordForm.php
deleted file mode 100644
index 5b7a3d2c8..000000000
--- a/cakephp/notejam/src/Form/ForgotPasswordForm.php
+++ /dev/null
@@ -1,35 +0,0 @@
-addField('email', ['type' => 'string']);
- }
-
- /**
- * Default validation rules.
- *
- * @param \Cake\Validation\Validator $validator Validator instance.
- * @return \Cake\Validation\Validator
- */
- protected function _buildValidator(Validator $validator)
- {
- return $validator
- ->requirePresence('email', 'create')
- ->add('email', 'valid', ['rule' => 'email']);
- }
-}
-
diff --git a/cakephp/notejam/src/Form/SettingsForm.php b/cakephp/notejam/src/Form/SettingsForm.php
deleted file mode 100644
index ef7391a58..000000000
--- a/cakephp/notejam/src/Form/SettingsForm.php
+++ /dev/null
@@ -1,47 +0,0 @@
-addField('current_password', ['type' => 'password'])
- ->addField('new_password', ['type' => 'password'])
- ->addField('confirm_new_password', ['type' => 'password']);
- }
-
- /**
- * Default validation rules.
- *
- * @param \Cake\Validation\Validator $validator Validator instance.
- * @return \Cake\Validation\Validator
- */
- protected function _buildValidator(Validator $validator)
- {
- return $validator
- ->requirePresence('current_password', 'create')
- ->notEmpty('current_password')
- ->requirePresence('new_password', 'create')
- ->notEmpty('new_password')
- ->add('new_password', [
- 'length' => [
- 'rule' => ['minLength', 6]
- ],
- 'compare' => [
- 'rule' => ['compareWith', 'confirm_new_password'],
- 'message' => 'Passwords do not match'
- ],
- ]);
- }
-}
diff --git a/cakephp/notejam/src/Model/Entity/Note.php b/cakephp/notejam/src/Model/Entity/Note.php
deleted file mode 100644
index 56c772790..000000000
--- a/cakephp/notejam/src/Model/Entity/Note.php
+++ /dev/null
@@ -1,41 +0,0 @@
- true,
- 'user_id' => true,
- 'name' => true,
- 'text' => true,
- 'created_at' => true,
- 'updated_at' => true,
- 'pad' => true,
- 'user' => true,
- ];
-
- /**
- * Get pretty date like "Yesterday", "2 days ago", "etc"
- *
- * @return string
- */
- public function getPrettyDate()
- {
- $time = new Time($this->_properties['updated_at']);
- return $time->timeAgoInWords([
- 'format' => 'd'
- ]);
- }
-}
diff --git a/cakephp/notejam/src/Model/Entity/Pad.php b/cakephp/notejam/src/Model/Entity/Pad.php
deleted file mode 100644
index 30163e110..000000000
--- a/cakephp/notejam/src/Model/Entity/Pad.php
+++ /dev/null
@@ -1,23 +0,0 @@
- true,
- 'user_id' => true,
- 'user' => true,
- 'notes' => true,
- ];
-}
diff --git a/cakephp/notejam/src/Model/Entity/User.php b/cakephp/notejam/src/Model/Entity/User.php
deleted file mode 100644
index 14dc77f42..000000000
--- a/cakephp/notejam/src/Model/Entity/User.php
+++ /dev/null
@@ -1,50 +0,0 @@
- true,
- 'password' => true,
- 'notes' => true,
- 'pads' => true,
- ];
-
-
- /**
- * Password setter
- *
- * @param string $value password
- * @return string
- */
- protected function _setPassword($value)
- {
- $hasher = new DefaultPasswordHasher();
- return $hasher->hash($value);
- }
-
- /**
- * Check if passwords matches
- *
- * @param string $password Password
- * @return boolean
- */
- public function checkPassword($password)
- {
- $hasher = new DefaultPasswordHasher();
- return $hasher->check($password, $this->password);
- }
-}
diff --git a/cakephp/notejam/src/Model/Table/NotesTable.php b/cakephp/notejam/src/Model/Table/NotesTable.php
deleted file mode 100644
index bcf9415a2..000000000
--- a/cakephp/notejam/src/Model/Table/NotesTable.php
+++ /dev/null
@@ -1,82 +0,0 @@
-table('notes');
- $this->displayField('name');
- $this->primaryKey('id');
- $this->addBehavior('Timestamp', [
- 'events' => [
- 'Model.beforeSave' => [
- 'created_at' => 'new',
- 'updated_at' => 'always'
- ]
- ]
- ]);
- $this->belongsTo('Pads', [
- 'foreignKey' => 'pad_id'
- ]);
- $this->belongsTo('Users', [
- 'foreignKey' => 'user_id',
- 'joinType' => 'INNER'
- ]);
- }
-
- /**
- * Default validation rules.
- *
- * @param \Cake\Validation\Validator $validator Validator instance.
- * @return \Cake\Validation\Validator
- */
- public function validationDefault(Validator $validator)
- {
- $validator
- ->add('id', 'valid', ['rule' => 'numeric'])
- ->allowEmpty('id', 'create');
-
- $validator
- ->requirePresence('name', 'create')
- ->notEmpty('name');
-
- $validator
- ->requirePresence('text', 'create')
- ->notEmpty('text');
-
- return $validator;
- }
-
- /**
- * Returns a rules checker object that will be used for validating
- * application integrity.
- *
- * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
- * @return \Cake\ORM\RulesChecker
- */
- public function buildRules(RulesChecker $rules)
- {
- $rules->add($rules->existsIn(['user_id'], 'Users'));
- return $rules;
- }
-}
diff --git a/cakephp/notejam/src/Model/Table/PadsTable.php b/cakephp/notejam/src/Model/Table/PadsTable.php
deleted file mode 100644
index 921e2a328..000000000
--- a/cakephp/notejam/src/Model/Table/PadsTable.php
+++ /dev/null
@@ -1,70 +0,0 @@
-table('pads');
- $this->displayField('name');
- $this->primaryKey('id');
- $this->belongsTo('Users', [
- 'foreignKey' => 'user_id',
- 'joinType' => 'INNER'
- ]);
- $this->hasMany('Notes', [
- 'foreignKey' => 'pad_id'
- ]);
- }
-
- /**
- * Default validation rules.
- *
- * @param \Cake\Validation\Validator $validator Validator instance.
- * @return \Cake\Validation\Validator
- */
- public function validationDefault(Validator $validator)
- {
- $validator
- ->add('id', 'valid', ['rule' => 'numeric'])
- ->allowEmpty('id', 'create');
-
- $validator
- ->requirePresence('name', 'create')
- ->notEmpty('name');
-
- return $validator;
- }
-
- /**
- * Returns a rules checker object that will be used for validating
- * application integrity.
- *
- * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
- * @return \Cake\ORM\RulesChecker
- */
- public function buildRules(RulesChecker $rules)
- {
- $rules->add($rules->existsIn(['user_id'], 'Users'));
- return $rules;
- }
-}
diff --git a/cakephp/notejam/src/Model/Table/UsersTable.php b/cakephp/notejam/src/Model/Table/UsersTable.php
deleted file mode 100644
index ba359d614..000000000
--- a/cakephp/notejam/src/Model/Table/UsersTable.php
+++ /dev/null
@@ -1,80 +0,0 @@
-table('users');
- $this->displayField('id');
- $this->primaryKey('id');
- $this->hasMany('Notes', [
- 'foreignKey' => 'user_id'
- ]);
- $this->hasMany('Pads', [
- 'foreignKey' => 'user_id'
- ]);
- }
-
- /**
- * Default validation rules.
- *
- * @param \Cake\Validation\Validator $validator Validator instance.
- * @return \Cake\Validation\Validator
- */
- public function validationDefault(Validator $validator)
- {
- $validator
- ->add('email', 'valid', ['rule' => 'email'])
- ->requirePresence('email', 'create')
- ->notEmpty('email');
-
- $validator
- ->requirePresence('password', 'create')
- ->notEmpty('password')
- ->add('password', [
- 'length' => [
- 'rule' => ['minLength', 6]
- ],
- 'compare' => [
- 'rule' => ['compareWith', 'confirm_password'],
- 'message' => 'Passwords do not match'
- ],
- ]);
-
-
- return $validator;
- }
-
- /**
- * Returns a rules checker object that will be used for validating
- * application integrity.
- *
- * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
- * @return \Cake\ORM\RulesChecker
- */
- public function buildRules(RulesChecker $rules)
- {
- $rules->add($rules->isUnique(['email']));
- return $rules;
- }
-}
diff --git a/cakephp/notejam/src/Shell/ConsoleShell.php b/cakephp/notejam/src/Shell/ConsoleShell.php
deleted file mode 100644
index 97c797443..000000000
--- a/cakephp/notejam/src/Shell/ConsoleShell.php
+++ /dev/null
@@ -1,79 +0,0 @@
-err('Unable to load Psy\Shell. ');
- $this->err('');
- $this->err('Make sure you have installed psysh as a dependency,');
- $this->err('and that Psy\Shell is registered in your autoloader.');
- $this->err('');
- $this->err('If you are using composer run');
- $this->err('');
- $this->err('$ php composer.phar require --dev psy/psysh ');
- $this->err('');
- return 1;
- }
-
- $this->out("You can exit with `CTRL-C` or `exit` ");
- $this->out('');
-
- Log::drop('debug');
- Log::drop('error');
- $this->_io->setLoggers(false);
- restore_error_handler();
- restore_exception_handler();
-
- $psy = new PsyShell();
- $psy->run();
- }
-
- /**
- * Display help for this console.
- *
- * @return ConsoleOptionParser
- */
- public function getOptionParser()
- {
- $parser = new ConsoleOptionParser('console', false);
- $parser->description(
- 'This shell provides a REPL that you can use to interact ' .
- 'with your application in an interactive fashion. You can use ' .
- 'it to run adhoc queries with your models, or experiment ' .
- 'and explore the features of CakePHP and your application.' .
- "\n\n" .
- 'You will need to have psysh installed for this Shell to work.'
- );
- return $parser;
- }
-}
diff --git a/cakephp/notejam/src/Template/Cell/Pads/display.ctp b/cakephp/notejam/src/Template/Cell/Pads/display.ctp
deleted file mode 100644
index 51181b443..000000000
--- a/cakephp/notejam/src/Template/Cell/Pads/display.ctp
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
= __("My pads"); ?>
-
-
-
-
- = $this->Html->link($pad->name, ['id' => $pad->id, '_name' => 'view_pad']) ?>
-
-
- No pads yet
-
-
-
- = $this->Html->link(__("New pad"), ['_name' => 'create_pad']); ?>
-
-
diff --git a/cakephp/notejam/src/Template/Element/Flash/default.ctp b/cakephp/notejam/src/Template/Element/Flash/default.ctp
deleted file mode 100644
index bc1e2c369..000000000
--- a/cakephp/notejam/src/Template/Element/Flash/default.ctp
+++ /dev/null
@@ -1,7 +0,0 @@
-
-= h($message) ?>
diff --git a/cakephp/notejam/src/Template/Element/Flash/error.ctp b/cakephp/notejam/src/Template/Element/Flash/error.ctp
deleted file mode 100644
index d3995ad10..000000000
--- a/cakephp/notejam/src/Template/Element/Flash/error.ctp
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/cakephp/notejam/src/Template/Element/Flash/success.ctp b/cakephp/notejam/src/Template/Element/Flash/success.ctp
deleted file mode 100644
index 3ce1cc159..000000000
--- a/cakephp/notejam/src/Template/Element/Flash/success.ctp
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/cakephp/notejam/src/Template/Element/notes/form.ctp b/cakephp/notejam/src/Template/Element/notes/form.ctp
deleted file mode 100644
index 8351ee735..000000000
--- a/cakephp/notejam/src/Template/Element/notes/form.ctp
+++ /dev/null
@@ -1,6 +0,0 @@
-Form->create($note, ['class' => 'note']); ?>
- Form->input('name'); ?>
- Form->textarea('text'); ?>
- Form->input('pad_id', ['type' => 'select', 'empty' => '---------', 'options' => $pads, 'default' => !empty($pad) ? $pad : 0]); ?>
- Form->submit(__('Save')); ?>
-Form->end(); ?>
diff --git a/cakephp/notejam/src/Template/Element/pads/form.ctp b/cakephp/notejam/src/Template/Element/pads/form.ctp
deleted file mode 100644
index dc9460c87..000000000
--- a/cakephp/notejam/src/Template/Element/pads/form.ctp
+++ /dev/null
@@ -1,4 +0,0 @@
-Form->create($pad, ['class' => 'pad']); ?>
- Form->input('name'); ?>
- Form->submit(__('Save')); ?>
-Form->end(); ?>
diff --git a/cakephp/notejam/src/Template/Email/html/default.ctp b/cakephp/notejam/src/Template/Email/html/default.ctp
deleted file mode 100644
index 386674a1a..000000000
--- a/cakephp/notejam/src/Template/Email/html/default.ctp
+++ /dev/null
@@ -1,22 +0,0 @@
-
- ' . $line . "
\n";
-endforeach;
-?>
diff --git a/cakephp/notejam/src/Template/Email/text/default.ctp b/cakephp/notejam/src/Template/Email/text/default.ctp
deleted file mode 100644
index 704b46f03..000000000
--- a/cakephp/notejam/src/Template/Email/text/default.ctp
+++ /dev/null
@@ -1,16 +0,0 @@
-
-= $content ?>
diff --git a/cakephp/notejam/src/Template/Error/error400.ctp b/cakephp/notejam/src/Template/Error/error400.ctp
deleted file mode 100644
index 5cd7ce6ee..000000000
--- a/cakephp/notejam/src/Template/Error/error400.ctp
+++ /dev/null
@@ -1,38 +0,0 @@
-layout = 'dev_error';
-
- $this->assign('title', $message);
- $this->assign('templateName', 'error400.ctp');
-
- $this->start('file');
-?>
-queryString)) : ?>
-
- SQL Query:
- = h($error->queryString) ?>
-
-
-params)) : ?>
- SQL Query Params:
- = Debugger::dump($error->params) ?>
-
-= $this->element('auto_table_warning') ?>
-end();
-endif;
-?>
-= h($message) ?>
-
- = __d('cake', 'Error') ?>:
- = sprintf(
- __d('cake', 'The requested address %s was not found on this server.'),
- "'{$url}' "
- ) ?>
-
diff --git a/cakephp/notejam/src/Template/Error/error500.ctp b/cakephp/notejam/src/Template/Error/error500.ctp
deleted file mode 100644
index d2b7d92a1..000000000
--- a/cakephp/notejam/src/Template/Error/error500.ctp
+++ /dev/null
@@ -1,37 +0,0 @@
-layout = 'dev_error';
-
- $this->assign('title', $message);
- $this->assign('templateName', 'error500.ctp');
-
- $this->start('file');
-?>
-queryString)) : ?>
-
- SQL Query:
- = h($error->queryString) ?>
-
-
-params)) : ?>
- SQL Query Params:
- = Debugger::dump($error->params) ?>
-
-element('auto_table_warning');
-
- if (extension_loaded('xdebug')):
- xdebug_print_function_stack();
- endif;
-
- $this->end();
-endif;
-?>
-= __d('cake', 'An Internal Error Has Occurred') ?>
-
- = __d('cake', 'Error') ?>:
- = h($message) ?>
-
diff --git a/cakephp/notejam/src/Template/Layout/Email/html/default.ctp b/cakephp/notejam/src/Template/Layout/Email/html/default.ctp
deleted file mode 100644
index 2b4397008..000000000
--- a/cakephp/notejam/src/Template/Layout/Email/html/default.ctp
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
- = $this->fetch('title') ?>
-
-
- = $this->fetch('content') ?>
-
-
diff --git a/cakephp/notejam/src/Template/Layout/Email/text/default.ctp b/cakephp/notejam/src/Template/Layout/Email/text/default.ctp
deleted file mode 100644
index 871dcfb48..000000000
--- a/cakephp/notejam/src/Template/Layout/Email/text/default.ctp
+++ /dev/null
@@ -1,16 +0,0 @@
-
-= $this->fetch('content') ?>
diff --git a/cakephp/notejam/src/Template/Layout/ajax.ctp b/cakephp/notejam/src/Template/Layout/ajax.ctp
deleted file mode 100644
index 871dcfb48..000000000
--- a/cakephp/notejam/src/Template/Layout/ajax.ctp
+++ /dev/null
@@ -1,16 +0,0 @@
-
-= $this->fetch('content') ?>
diff --git a/cakephp/notejam/src/Template/Layout/anonymous.ctp b/cakephp/notejam/src/Template/Layout/anonymous.ctp
deleted file mode 100644
index 42db077f5..000000000
--- a/cakephp/notejam/src/Template/Layout/anonymous.ctp
+++ /dev/null
@@ -1,6 +0,0 @@
-extend('/Layout/default'); ?>
-
-
- = $this->Flash->render() ?>
- = $this->fetch('content') ?>
-
diff --git a/cakephp/notejam/src/Template/Layout/default.ctp b/cakephp/notejam/src/Template/Layout/default.ctp
deleted file mode 100644
index 9c9a7cc8d..000000000
--- a/cakephp/notejam/src/Template/Layout/default.ctp
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
- = $this->Html->charset() ?>
- = $this->fetch('title') ?>
-
- = $this->Html->css('http://cdnjs.cloudflare.com/ajax/libs/skeleton/1.2/base.min.css') ?>
- = $this->Html->css('http://cdnjs.cloudflare.com/ajax/libs/skeleton/1.2/skeleton.min.css') ?>
- = $this->Html->css('http://cdnjs.cloudflare.com/ajax/libs/skeleton/1.2/layout.css') ?>
- = $this->Html->css('style.css') ?>
-
- = $this->fetch('css') ?>
-
-
-
-
-
- request->session()->read('Auth.User')): ?>
- = $this->request->session()->read('Auth.User.email') ?>: = $this->Html->link(__('Account settings'), ['_name' => 'settings'])?> = $this->Html->link(__('Sign out'), ['_name' => 'signout'])?>
-
- = $this->Html->link(__('Sign up'), ['_name' => 'signup'])?> = $this->Html->link(__('Sign in'), ['_name' => 'signin'])?>
-
-
-
-
-
-
-
- = $this->fetch('content') ?>
-
-
-
-
-
-
-
diff --git a/cakephp/notejam/src/Template/Layout/error.ctp b/cakephp/notejam/src/Template/Layout/error.ctp
deleted file mode 100644
index e6945a8ad..000000000
--- a/cakephp/notejam/src/Template/Layout/error.ctp
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
-
- = $this->Html->charset() ?>
-
- = $cakeDescription ?>:
- = $this->fetch('title') ?>
-
- = $this->Html->meta('icon') ?>
-
- = $this->Html->css('base.css') ?>
- = $this->Html->css('cake.css') ?>
-
- = $this->fetch('meta') ?>
- = $this->fetch('css') ?>
- = $this->fetch('script') ?>
-
-
-
-
-
- = $this->Flash->render() ?>
-
- = $this->fetch('content') ?>
-
-
-
-
-
diff --git a/cakephp/notejam/src/Template/Layout/rss/default.ctp b/cakephp/notejam/src/Template/Layout/rss/default.ctp
deleted file mode 100644
index fdadcbf78..000000000
--- a/cakephp/notejam/src/Template/Layout/rss/default.ctp
+++ /dev/null
@@ -1,14 +0,0 @@
-fetch('title');
-endif;
-
-echo $this->Rss->document(
- $this->Rss->channel(
- array(), $channel, $this->fetch('content')
- )
-);
-?>
diff --git a/cakephp/notejam/src/Template/Layout/user.ctp b/cakephp/notejam/src/Template/Layout/user.ctp
deleted file mode 100644
index 0ae6e9478..000000000
--- a/cakephp/notejam/src/Template/Layout/user.ctp
+++ /dev/null
@@ -1,8 +0,0 @@
-extend('/Layout/default'); ?>
-
-= $this->cell('Pads', ['auth' => 'auth_param']); ?>
-
-
- = $this->Flash->render() ?>
- = $this->fetch('content') ?>
-
diff --git a/cakephp/notejam/src/Template/Notes/create.ctp b/cakephp/notejam/src/Template/Notes/create.ctp
deleted file mode 100644
index 8c191f354..000000000
--- a/cakephp/notejam/src/Template/Notes/create.ctp
+++ /dev/null
@@ -1,3 +0,0 @@
-assign('title', __('New note')); ?>
-
-element('notes/form'); ?>
diff --git a/cakephp/notejam/src/Template/Notes/delete.ctp b/cakephp/notejam/src/Template/Notes/delete.ctp
deleted file mode 100644
index cc79d7d9e..000000000
--- a/cakephp/notejam/src/Template/Notes/delete.ctp
+++ /dev/null
@@ -1,7 +0,0 @@
-= __("Are you sure you want to delete {$note->name};") ?>
-= $this->Form->create(); ?>
-
- " ?>
-
- = $this->Html->link(__('Cancel'), ['_name' => 'view_note', 'id' => $note->id]) ?>
-= $this->Form->end(); ?>
diff --git a/cakephp/notejam/src/Template/Notes/edit.ctp b/cakephp/notejam/src/Template/Notes/edit.ctp
deleted file mode 100644
index 24faf5dee..000000000
--- a/cakephp/notejam/src/Template/Notes/edit.ctp
+++ /dev/null
@@ -1,3 +0,0 @@
-assign('title', __('Edit ' . $note->name)); ?>
-
-element('notes/form'); ?>
diff --git a/cakephp/notejam/src/Template/Notes/index.ctp b/cakephp/notejam/src/Template/Notes/index.ctp
deleted file mode 100644
index db767a984..000000000
--- a/cakephp/notejam/src/Template/Notes/index.ctp
+++ /dev/null
@@ -1,20 +0,0 @@
-assign('title', __("All notes ({$notes->count()})")); ?>
-count()): ?>
-
-
- = __("Note") ?> = $this->Html->link('↑', ['_name' => 'index', 'order' => '-name'], ['class' => 'sort_arrow']) ?>= $this->Html->link('↓', ['_name' => 'index', 'order' => 'name'], ['class' => 'sort_arrow']) ?>
- = __("Pad") ?>
- = __("Last modified") ?> = $this->Html->link('↑', ['_name' => 'index', 'order' => '-updated_at'], ['class' => 'sort_arrow']) ?>= $this->Html->link('↓', ['_name' => 'index', 'order' => 'updated_at'], ['class' => 'sort_arrow']) ?>
-
-
-
- = $this->Html->link($note->name, ['id' => $note->id, '_name' => 'view_note']) ?>
- = h($note->pad) ? $this->Html->link($note->pad->name, ['id' => $note->pad->id, '_name' => 'view_pad']) : 'No pad'; ?>
- = $note->getPrettyDate(); ?>
-
-
-
-
- = __("Create your first note") ?>
-
-= $this->Html->link(__("New note"), ["_name" => "create_note"], ["class" => "button"]); ?>
diff --git a/cakephp/notejam/src/Template/Notes/view.ctp b/cakephp/notejam/src/Template/Notes/view.ctp
deleted file mode 100644
index 3c48c2362..000000000
--- a/cakephp/notejam/src/Template/Notes/view.ctp
+++ /dev/null
@@ -1,9 +0,0 @@
-assign('title', h($note->name)); ?>
-Last edited at = $note->getPrettyDate(); ?>
-
-
- = h($note->text); ?>
-
-
-= $this->Html->link('Edit note', ['id' => $note->id, '_name' => 'edit_note'], ['class' => 'button']) ?>
-= $this->Html->link('Delete it', ['id' => $note->id, '_name' => 'delete_note'], ['class' => 'delete-note']) ?>
diff --git a/cakephp/notejam/src/Template/Pads/create.ctp b/cakephp/notejam/src/Template/Pads/create.ctp
deleted file mode 100644
index 236e80839..000000000
--- a/cakephp/notejam/src/Template/Pads/create.ctp
+++ /dev/null
@@ -1,3 +0,0 @@
-assign('title', __('New pad')); ?>
-
-element('pads/form'); ?>
diff --git a/cakephp/notejam/src/Template/Pads/delete.ctp b/cakephp/notejam/src/Template/Pads/delete.ctp
deleted file mode 100644
index b6f307d19..000000000
--- a/cakephp/notejam/src/Template/Pads/delete.ctp
+++ /dev/null
@@ -1,6 +0,0 @@
-= __("Are you sure you want to delete {$pad->name};") ?>
-= $this->Form->create(); ?>
- " ?>
-
- = $this->Html->link(__('Cancel'), ['_name' => 'index']) ?>
-= $this->Form->end(); ?>
diff --git a/cakephp/notejam/src/Template/Pads/edit.ctp b/cakephp/notejam/src/Template/Pads/edit.ctp
deleted file mode 100644
index 7fba45ec6..000000000
--- a/cakephp/notejam/src/Template/Pads/edit.ctp
+++ /dev/null
@@ -1,4 +0,0 @@
-assign('title', __('Edit ' . $pad->name)); ?>
-
-element('pads/form'); ?>
-= $this->Html->link('Delete pad', ['id' => $pad->id, '_name' => 'delete_pad'], ['class' => 'small-red']) ?>
diff --git a/cakephp/notejam/src/Template/Pads/view.ctp b/cakephp/notejam/src/Template/Pads/view.ctp
deleted file mode 100644
index 4766dc3f1..000000000
--- a/cakephp/notejam/src/Template/Pads/view.ctp
+++ /dev/null
@@ -1,19 +0,0 @@
-assign('title', __($pad->name . " ({$notes->count()})")); ?>
-count()): ?>
-
-
- = __("Note") ?> = $this->Html->link('↑', ['_name' => 'view_pad', 'order' => '-name', 'id' => $pad->id], ['class' => 'sort_arrow']) ?>= $this->Html->link('↓', ['_name' => 'view_pad', 'order' => 'name', 'id' => $pad->id], ['class' => 'sort_arrow']) ?>
- = __("Last modified") ?> = $this->Html->link('↑', ['_name' => 'view_pad', 'order' => '-updated_at', 'id' => $pad->id], ['class' => 'sort_arrow']) ?>= $this->Html->link('↓', ['_name' => 'view_pad', 'order' => 'updated_at', 'id' => $pad->id], ['class' => 'sort_arrow']) ?>
-
-
-
- = $this->Html->link($note->name, ['id' => $note->id, '_name' => 'view_note']) ?>
- = $note->getPrettyDate(); ?>
-
-
-
-
- = __("Create your first note in the pad") ?>
-
-= $this->Html->link(__("New note"), ["_name" => "create_note", "pad" => $pad->id], ["class" => "button"]); ?>
-= $this->Html->link(__("Pad settings"), ["_name" => "edit_pad", "id" => $pad->id]); ?>
diff --git a/cakephp/notejam/src/Template/Users/forgotpassword.ctp b/cakephp/notejam/src/Template/Users/forgotpassword.ctp
deleted file mode 100644
index da2eafa98..000000000
--- a/cakephp/notejam/src/Template/Users/forgotpassword.ctp
+++ /dev/null
@@ -1,6 +0,0 @@
-assign('title', __('Forgot password?')); ?>
-
-Form->create($form, ['class' => 'offset-by-six sign-in']); ?>
- Form->input('email', ['type' => 'text']); ?>
- Form->submit(__('Generate password')); ?>
-Form->end(); ?>
diff --git a/cakephp/notejam/src/Template/Users/index.ctp b/cakephp/notejam/src/Template/Users/index.ctp
deleted file mode 100644
index 7a4b50039..000000000
--- a/cakephp/notejam/src/Template/Users/index.ctp
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
= __('Actions') ?>
-
- = $this->Html->link(__('New User'), ['action' => 'add']) ?>
- = $this->Html->link(__('List Notes'), ['controller' => 'Notes', 'action' => 'index']) ?>
- = $this->Html->link(__('New Note'), ['controller' => 'Notes', 'action' => 'add']) ?>
- = $this->Html->link(__('List Pads'), ['controller' => 'Pads', 'action' => 'index']) ?>
- = $this->Html->link(__('New Pad'), ['controller' => 'Pads', 'action' => 'add']) ?>
-
-
-
-
-
-
- = $this->Paginator->sort('id') ?>
- = $this->Paginator->sort('email') ?>
- = $this->Paginator->sort('password') ?>
- = __('Actions') ?>
-
-
-
-
-
- = $this->Number->format($user->id) ?>
- = h($user->email) ?>
- = h($user->password) ?>
-
- = $this->Html->link(__('View'), ['action' => 'view', $user->id]) ?>
- = $this->Html->link(__('Edit'), ['action' => 'edit', $user->id]) ?>
- = $this->Form->postLink(__('Delete'), ['action' => 'delete', $user->id], ['confirm' => __('Are you sure you want to delete # {0}?', $user->id)]) ?>
-
-
-
-
-
-
-
-
-
= $this->Paginator->counter() ?>
-
-
diff --git a/cakephp/notejam/src/Template/Users/settings.ctp b/cakephp/notejam/src/Template/Users/settings.ctp
deleted file mode 100644
index 9e6424874..000000000
--- a/cakephp/notejam/src/Template/Users/settings.ctp
+++ /dev/null
@@ -1,8 +0,0 @@
-assign('title', __('Account settings')); ?>
-
-Form->create($settings, ['class' => 'offset-by-six sign-in']); ?>
- Form->input('current_password', ['type' => 'password']); ?>
- Form->input('new_password', ['type' => 'password']); ?>
- Form->input('confirm_new_password', ['type' => 'password']); ?>
- Form->submit(__('Save')); ?>
-Form->end(); ?>
diff --git a/cakephp/notejam/src/Template/Users/signin.ctp b/cakephp/notejam/src/Template/Users/signin.ctp
deleted file mode 100644
index 7138e35eb..000000000
--- a/cakephp/notejam/src/Template/Users/signin.ctp
+++ /dev/null
@@ -1,9 +0,0 @@
-assign('title', __('Sign in')); ?>
-
-Form->create(null, ['class' => 'offset-by-six sign-in']); ?>
- Form->input('email'); ?>
- Form->input('password', ['label' => __('Password')]); ?>
- or = $this->Html->link(__('Sign Up'), ['_name' => 'signup']) ?>
-
- = $this->Html->link(__('Forgot password?'), ['_name' => 'forgot_password'], ['class' => 'small-red']) ?>
-Form->end(); ?>
diff --git a/cakephp/notejam/src/Template/Users/signup.ctp b/cakephp/notejam/src/Template/Users/signup.ctp
deleted file mode 100644
index 770953124..000000000
--- a/cakephp/notejam/src/Template/Users/signup.ctp
+++ /dev/null
@@ -1,7 +0,0 @@
-assign('title', __('Sign up')); ?>
-Form->create($user, ['class' => 'offset-by-six sign-in']); ?>
- Form->input('email'); ?>
- Form->input('password', ['label' => __('Password')]); ?>
- Form->input('confirm_password', ['label' => __('Confirm password'), 'type' => 'password']); ?>
- or = $this->Html->link(__('Sign In'), ['_name' => 'signin']) ?>
-Form->end(); ?>
diff --git a/cakephp/notejam/src/View/AppView.php b/cakephp/notejam/src/View/AppView.php
deleted file mode 100644
index e8bb1118c..000000000
--- a/cakephp/notejam/src/View/AppView.php
+++ /dev/null
@@ -1,35 +0,0 @@
-loadHelper('Html');`
- *
- * @return void
- */
- public function initialize()
- {
- }
-}
diff --git a/cakephp/notejam/src/View/Cell/PadsCell.php b/cakephp/notejam/src/View/Cell/PadsCell.php
deleted file mode 100644
index 10d2d301a..000000000
--- a/cakephp/notejam/src/View/Cell/PadsCell.php
+++ /dev/null
@@ -1,33 +0,0 @@
-request->session()->read('Auth.User.id');
- $user = \Cake\ORM\TableRegistry::get('Users')->get($id, [
- 'contain' => ['Pads']
- ]);
- $this->set('pads', $user->pads);
- }
-}
diff --git a/cakephp/notejam/tests/Fixture/NotesFixture.php b/cakephp/notejam/tests/Fixture/NotesFixture.php
deleted file mode 100644
index 5252801d2..000000000
--- a/cakephp/notejam/tests/Fixture/NotesFixture.php
+++ /dev/null
@@ -1,51 +0,0 @@
- ['type' => 'integer', 'length' => null, 'unsigned' => false, 'null' => false, 'default' => null, 'autoIncrement' => true, 'precision' => null, 'comment' => null],
- 'pad_id' => ['type' => 'integer', 'length' => null, 'unsigned' => false, 'null' => true, 'default' => null, 'precision' => null, 'comment' => null, 'autoIncrement' => null],
- 'user_id' => ['type' => 'integer', 'length' => null, 'unsigned' => false, 'null' => false, 'default' => null, 'precision' => null, 'comment' => null, 'autoIncrement' => null],
- 'name' => ['type' => 'string', 'length' => 100, 'null' => false, 'default' => null, 'precision' => null, 'comment' => null, 'fixed' => null],
- 'text' => ['type' => 'text', 'length' => null, 'null' => false, 'default' => null, 'precision' => null, 'comment' => null],
- 'created_at' => ['type' => 'datetime', 'length' => null, 'null' => false, 'default' => null, 'precision' => null, 'comment' => null],
- 'updated_at' => ['type' => 'datetime', 'length' => null, 'null' => false, 'default' => null, 'precision' => null, 'comment' => null],
- '_constraints' => [
- 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []],
- 'user_id_fk' => ['type' => 'foreign', 'columns' => ['user_id'], 'references' => ['users', 'id'], 'update' => 'noAction', 'delete' => 'noAction', 'length' => []],
- 'pad_id_fk' => ['type' => 'foreign', 'columns' => ['pad_id'], 'references' => ['pads', 'id'], 'update' => 'noAction', 'delete' => 'noAction', 'length' => []],
- ],
- ];
- // @codingStandardsIgnoreEnd
-
- /**
- * Records
- *
- * @var array
- */
- public $records = [
- [
- 'id' => 1,
- 'pad_id' => 1,
- 'user_id' => 1,
- 'name' => 'Note #1',
- 'text' => 'Lorem ipsum dolor sit amet, aliquet feugiat. Convallis morbi fringilla gravida, phasellus feugiat dapibus velit nunc, pulvinar eget sollicitudin venenatis cum nullam, vivamus ut a sed, mollitia lectus. Nulla vestibulum massa neque ut et, id hendrerit sit, feugiat in taciti enim proin nibh, tempor dignissim, rhoncus duis vestibulum nunc mattis convallis.',
- 'created_at' => '2015-07-12 19:07:40',
- 'updated_at' => '2015-07-12 19:07:40'
- ],
- ];
-}
diff --git a/cakephp/notejam/tests/Fixture/PadsFixture.php b/cakephp/notejam/tests/Fixture/PadsFixture.php
deleted file mode 100644
index 27da918d4..000000000
--- a/cakephp/notejam/tests/Fixture/PadsFixture.php
+++ /dev/null
@@ -1,42 +0,0 @@
- ['type' => 'integer', 'length' => null, 'unsigned' => false, 'null' => false, 'default' => null, 'autoIncrement' => true, 'precision' => null, 'comment' => null],
- 'name' => ['type' => 'string', 'length' => 100, 'null' => false, 'default' => null, 'precision' => null, 'comment' => null, 'fixed' => null],
- 'user_id' => ['type' => 'integer', 'length' => null, 'unsigned' => false, 'null' => false, 'default' => null, 'precision' => null, 'comment' => null, 'autoIncrement' => null],
- '_constraints' => [
- 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []],
- 'user_id_fk' => ['type' => 'foreign', 'columns' => ['user_id'], 'references' => ['users', 'id'], 'update' => 'noAction', 'delete' => 'noAction', 'length' => []],
- ],
- ];
- // @codingStandardsIgnoreEnd
-
- /**
- * Records
- *
- * @var array
- */
- public $records = [
- [
- 'id' => 1,
- 'name' => 'Pad',
- 'user_id' => 1
- ],
- ];
-}
diff --git a/cakephp/notejam/tests/Fixture/UsersFixture.php b/cakephp/notejam/tests/Fixture/UsersFixture.php
deleted file mode 100644
index 6731d3a4f..000000000
--- a/cakephp/notejam/tests/Fixture/UsersFixture.php
+++ /dev/null
@@ -1,48 +0,0 @@
- ['type' => 'integer', 'length' => null, 'unsigned' => false, 'null' => false, 'default' => null, 'autoIncrement' => true, 'precision' => null, 'comment' => null],
- 'email' => ['type' => 'string', 'length' => 75, 'null' => false, 'default' => null, 'precision' => null, 'comment' => null, 'fixed' => null],
- 'password' => ['type' => 'string', 'length' => 128, 'null' => false, 'default' => null, 'precision' => null, 'comment' => null, 'fixed' => null],
- '_constraints' => [
- 'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []],
- ],
- ];
- // @codingStandardsIgnoreEnd
-
- /**
- * Records
- *
- * @var array
- */
- public $records = [
- [
- 'id' => 1,
- 'email' => 'user1@example.com',
- // password is 111111
- 'password' => '$2y$10$0hoGWxcL.dC6WWrhCDQUVezLFlxMkguhXDziDi.yQSLjhoBaI9FDO'
- ],
- [
- 'id' => 2,
- 'email' => 'user2@example.com',
- // password is 111111
- 'password' => '$2y$10$0hoGWxcL.dC6WWrhCDQUVezLFlxMkguhXDziDi.yQSLjhoBaI9FDO'
- ],
- ];
-}
diff --git a/cakephp/notejam/tests/TestCase/Controller/NotesControllerTest.php b/cakephp/notejam/tests/TestCase/Controller/NotesControllerTest.php
deleted file mode 100644
index 5fc33976f..000000000
--- a/cakephp/notejam/tests/TestCase/Controller/NotesControllerTest.php
+++ /dev/null
@@ -1,151 +0,0 @@
-signin($this->user);
- $data = ['name' => 'New note', 'text' => 'Text'];
- $this->post('/notes/create', $data);
- $this->assertResponseSuccess();
- $this->assertRedirect('/');
- $this->assertEquals(
- TableRegistry::get('Notes')->get(2)->name,
- $data['name']
- );
- }
-
- /**
- * Test if validation works when create a note
- *
- * @return void
- */
- public function testCreateFailRequiredFields()
- {
- $this->signin($this->user);
- $this->post('/notes/create', ['name' => '']);
- $this->assertResponseContains('This field cannot be left empty');
- }
-
- /**
- * Test if note can be successfully edited
- *
- * @return void
- */
- public function testEditSuccess()
- {
- $this->signin($this->user);
- $data = ['name' => 'New note name'];
- $this->post('/notes/1/edit', $data);
- $this->assertResponseSuccess();
- $this->assertRedirect('/notes/1');
- $this->assertEquals(
- TableRegistry::get('Notes')->get(1)->name,
- $data['name']
- );
- }
-
- /**
- * Test if validation works when edit a note
- *
- * @return void
- */
- public function testEditFailRequiredFields()
- {
- $this->signin($this->user);
- $this->post('/notes/1/edit', ['name' => '']);
- $this->assertResponseContains('This field cannot be left empty');
- }
-
- /**
- * Test if note cannot be successfully viewed by not an owner
- *
- * @return void
- */
- public function testEditFailNotAnOwner()
- {
- $this->signin(['id' => 2, 'email' => 'user2@example.com']);
- $data = ['name' => 'New note name'];
- $this->post('/notes/1/edit', $data);
- $this->assertResponseError();
- }
-
- /**
- * Test if note can be successfully viewed
- *
- * @return void
- */
- public function testViewSuccess()
- {
- $this->signin($this->user);
- $this->get('/notes/1');
- $this->assertResponseSuccess();
- $this->assertResponseContains('Note #1');
- }
-
- /**
- * Test if note cannot be viewed by not an owner
- *
- * @return void
- */
- public function testViewFailNotAnOwner()
- {
- $this->signin(['id' => 2, 'email' => 'user2@example.com']);
- $this->get('/notes/1/');
- $this->assertResponseError();
- }
-
- /**
- * Test if note can be successfully deleted
- *
- * @return void
- */
- public function testDeleteSuccess()
- {
- $this->signin($this->user);
- $this->post('/notes/1/delete', []);
- $this->assertResponseSuccess();
- $this->assertRedirect('/');
- $this->assertEquals(
- TableRegistry::get('Notes')->find('all')->count(),
- 0
- );
- }
-
- /**
- * Test if note cannot be deleted by not an owner
- *
- * @return void
- */
- public function testDeleteFailNotAnOwner()
- {
- $this->signin(['id' => 2, 'email' => 'user2@example.com']);
- $this->post('/notes/1/delete', []);
- $this->assertResponseError();
- }
-}
diff --git a/cakephp/notejam/tests/TestCase/Controller/PadsControllerTest.php b/cakephp/notejam/tests/TestCase/Controller/PadsControllerTest.php
deleted file mode 100644
index d1921f7cb..000000000
--- a/cakephp/notejam/tests/TestCase/Controller/PadsControllerTest.php
+++ /dev/null
@@ -1,151 +0,0 @@
-signin($this->user);
- $data = ['name' => 'New pad'];
- $this->post('/pads/create', $data);
- $this->assertResponseSuccess();
- $this->assertRedirect('/pads/2');
- $this->assertEquals(
- TableRegistry::get('Pads')->get(2)->name,
- $data['name']
- );
- }
-
- /**
- * Test if validation works when create a pad
- *
- * @return void
- */
- public function testCreateFailRequiredFields()
- {
- $this->signin($this->user);
- $this->post('/pads/create', ['name' => '']);
- $this->assertResponseContains('This field cannot be left empty');
- }
-
- /**
- * Test if pad can be successfully edited
- *
- * @return void
- */
- public function testEditSuccess()
- {
- $this->signin($this->user);
- $data = ['name' => 'New pad name'];
- $this->post('/pads/1/edit', $data);
- $this->assertResponseSuccess();
- $this->assertRedirect('/pads/1');
- $this->assertEquals(
- TableRegistry::get('Pads')->get(1)->name,
- $data['name']
- );
- }
-
- /**
- * Test if validation works when edit a pad
- *
- * @return void
- */
- public function testEditFailRequiredFields()
- {
- $this->signin($this->user);
- $this->post('/pads/1/edit', ['name' => '']);
- $this->assertResponseContains('This field cannot be left empty');
- }
-
- /**
- * Test if pad cannot be edited by not an owner
- *
- * @return void
- */
- public function testEditFailNotAnOwner()
- {
- $this->signin(['id' => 2, 'email' => 'user2@example.com']);
- $data = ['name' => 'New pad name'];
- $this->post('/pads/1/edit', $data);
- $this->assertResponseError();
- }
-
- /**
- * Test if pad can be successfully viewed
- *
- * @return void
- */
- public function testViewSuccess()
- {
- $this->signin($this->user);
- $this->get('/pads/1');
- $this->assertResponseSuccess();
- $this->assertResponseContains('Pad (1)');
- }
-
- /**
- * Test if pad cannot be viewed by not an owner
- *
- * @return void
- */
- public function testViewFailNotAnOwner()
- {
- $this->signin(['id' => 2, 'email' => 'user2@example.com']);
- $this->get('/pads/1');
- $this->assertResponseError();
- }
-
- /**
- * Test if pad can be successfully deleted
- *
- * @return void
- */
- public function testDeleteSuccess()
- {
- $this->signin($this->user);
- $this->post('/pads/1/delete', []);
- $this->assertResponseSuccess();
- $this->assertRedirect('/');
- $this->assertEquals(
- TableRegistry::get('Pads')->find('all')->count(),
- 0
- );
- }
-
- /**
- * Test if pad cannot be deleted by not an owner
- *
- * @return void
- */
- public function testDeleteFailNotAnOwner()
- {
- $this->signin(['id' => 2, 'email' => 'user2@example.com']);
- $this->post('/pads/1/delete', []);
- $this->assertResponseError();
- }
-}
diff --git a/cakephp/notejam/tests/TestCase/Controller/UsersControllerTest.php b/cakephp/notejam/tests/TestCase/Controller/UsersControllerTest.php
deleted file mode 100644
index 15ce28ec3..000000000
--- a/cakephp/notejam/tests/TestCase/Controller/UsersControllerTest.php
+++ /dev/null
@@ -1,139 +0,0 @@
- 'user@example.com',
- 'password' => 'pa$$word',
- 'confirm_password' => 'pa$$word'
- ];
- $this->post('/signup', $data);
- $this->assertResponseSuccess();
- $users = TableRegistry::get('Users');
- $query = $users->find()->where(['email' => $data['email']]);
- $this->assertEquals(1, $query->count());
- }
-
- /**
- * Test if signup fails if required fields are missing
- *
- * @return void
- */
- public function testSignupFailRequiredFields()
- {
- $data = [
- 'email' => '',
- 'password' => '',
- 'confirm_password' => ''
- ];
- $this->post('/signup', $data);
- $this->assertResponseSuccess();
- $this->assertResponseContains('This field cannot be left empty');
- }
-
- /**
- * Test if signup fails if email is invalid
- *
- * @return void
- */
- public function testSignupFailInvalidEmail()
- {
- $data = [
- 'email' => 'invalid email'
- ];
- $this->post('/signup', $data);
- $this->assertResponseSuccess();
- $this->assertResponseContains('The provided value is invalid');
- }
-
- /**
- * Test if signup fails if email already exists
- *
- * @return void
- */
- public function testSignupFailEmailExists()
- {
- $data = [
- 'email' => 'user1@example.com',
- 'password' => 'pa$$word',
- 'confirm_password' => 'pa$$word'
- ];
- $this->post('/signup', $data);
- $this->assertResponseSuccess();
- $this->assertResponseContains('This value is already in use');
- }
-
- /**
- * Test if signup fails if passwords do not match
- *
- * @return void
- */
- public function testSignupFailPasswordsNotMatch()
- {
- $data = [
- 'email' => 'user1@example.com',
- 'password' => 'pa$$word1',
- 'confirm_password' => 'pa$$word2'
- ];
- $this->post('/signup', $data);
- $this->assertResponseSuccess();
- $this->assertResponseContains('Passwords do not match');
- }
-
- /**
- * Test if signin success
- *
- * @return void
- */
- public function testSigninSuccess()
- {
- $data = [
- 'email' => 'user1@example.com',
- 'password' => '111111'
- ];
- $this->post('/signin', $data);
- $this->assertResponseSuccess();
- $this->assertRedirect(['controller' => 'Notes', 'action' => 'index']);
- $this->assertSession('user1@example.com', 'Auth.User.email');
-
- }
-
- /**
- * Test if signin fails if provided credentials are wroing
- *
- * @return void
- */
- public function testSigninFailWrongCredentials()
- {
- $data = [
- 'email' => 'user2@example.com',
- 'password' => 'wrong password'
- ];
- $this->post('/signin', $data);
- $this->assertResponseContains('Your username or password is incorrect.');
- }
-}
diff --git a/cakephp/notejam/tests/TestCase/NotejamTestCase.php b/cakephp/notejam/tests/TestCase/NotejamTestCase.php
deleted file mode 100644
index d8d5f468c..000000000
--- a/cakephp/notejam/tests/TestCase/NotejamTestCase.php
+++ /dev/null
@@ -1,44 +0,0 @@
- 1,
- 'email' => 'user@example.com'
- ];
-
- /**
- * Sign in user
- *
- * @param array $user User
- * @return void
- */
- public function signin($user)
- {
- $this->session([
- 'Auth' => [
- 'User' => [
- 'id' => $user['id'],
- 'username' => $user['email']
- ]
- ]
- ]);
- }
-
- /**
- * Create a user
- *
- * @param array $userData User data
- * @return User
- */
- public function createUser($userData)
- {
- $user = TableRegistry::get('Users')->newEntity($userData);
- TableRegistry::get('Users')->save($user);
- return $user;
- }
-}
diff --git a/cakephp/notejam/tests/bootstrap.php b/cakephp/notejam/tests/bootstrap.php
deleted file mode 100644
index e56aa9df2..000000000
--- a/cakephp/notejam/tests/bootstrap.php
+++ /dev/null
@@ -1,8 +0,0 @@
-
- RewriteEngine On
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteRule ^ index.php [L]
-
diff --git a/cakephp/notejam/webroot/css/style.css b/cakephp/notejam/webroot/css/style.css
deleted file mode 100644
index 5748e0390..000000000
--- a/cakephp/notejam/webroot/css/style.css
+++ /dev/null
@@ -1,396 +0,0 @@
-/*
-* Skeleton V1.0.3
-* Copyright 2011, Dave Gamache
-* www.getskeleton.com
-* Free to use under the MIT license.
-* http://www.opensource.org/licenses/mit-license.php
-* 7/17/2011
-*/
-
-
-/* Documentation Styles
-================================================== */
- div.container {
- padding-top: 40px; }
-
- /* Doc nav */
- nav {
- width: 160px; }
- #logo, .bold-header {
- margin-bottom: 30px;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- letter-spacing: -1px;
- color: #555;
- font-weight: bold; }
- .bold-header span {
- font-weight: normal;
- font-size: 23px;
- }
- .bold-header a.header {
- text-decoration: none;
- color: inherit;
- }
- .bold-header span.jam {
- font-size: 46px;
- line-height: 50px;
- }
- nav ul {
- float: left; }
- nav ul li {
- display: block;
- margin-bottom: 10px; }
- nav ul li a,
- nav ul li a:visited,
- nav ul li a:active {
- font-size: 14px;
- color: #555;
- text-decoration: none;
- font-weight: bold; }
- nav ul li a:hover,
- nav ul li a:focus {
- color: #222; }
- header h1 {
- font-size: 52px;
- line-height: 61px;
- letter-spacing: -1px;
- font-weight: normal;
- font-family: "Georgia", "Times New Roman", Helvetica, Arial, sans-serif; }
- hr.large {
- border: none;
- height: 8px;
- background: #ebebeb;
- margin: 50px 0; }
- div.doc-section {
- margin: 30px 0; }
-
- #whatAndWhy .row {
- padding: 30px 0 0; }
-
- #typography blockquote {
- margin-top: 20px; }
-
- .hidden-code a {
- font-size: 12px;
- color: #999; }
- .hidden-code>div {
- display: none; }
-
-
- /* Grid */
- #grid .column,
- #grid .columns {
- background: #ddd;
- height: 25px;
- line-height: 25px;
- margin-bottom: 10px;
- text-align: center;
- text-transform: uppercase;
- color: #555;
- font-size: 12px;
- font-weight: bold;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px; }
- #grid .column:hover,
- #grid .columns:hover {
- background: #bbb;
- color: #333; }
- #grid .example-grid { overflow: hidden; }
-
- .post-button-note,
- .post-button-note a {
- font-size: 11px;
- color: #999; }
-
- #examples .four.columns a {
- text-decoration: none;
- }
- #examples .four.columns a:hover {
- text-decoration: underline;
- }
-
-
- .resize {
- position: fixed;
- bottom: 0;
- right: 0;
- height: 80px;
- width: 80px;
- background: url(images/resize.png); }
-
-
- img {
- max-width: 100%;
- height: auto; }
-
- .gist-meta { display: none !important;}
-
- ul ul ul li { margin-bottom: 3px; }
-
- .twitter-share-button { margin-bottom: -18px; }
-
- /* Table stylesheets */
- table {
- width: 100%;
- border-collapse: collapse;
- }
-
- table th, table td {
- padding: 10px 10px 9px;
- font-size: 13px;
- line-height: 18px;
- text-align: left;
- }
-
- table td {
- vertical-align: top;
- border-top: solid 1px #ddd;
- }
-
- table th {
- padding-top: 9px;
- font-weight: bold;
- vertical-align: middle;
- }
-
- table.condensed th, table.condensed td {
- padding: 5px 5px 4px;
- }
-
- table.bordered {
- border-collapse: separate;
- border: solid 1px #ddd;
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
- }
-
- table.bordered th + th,
- table.bordered th + td,
- table.bordered td + td {
- border-left: solid 1px #ddd;
- }
-
- .zebra-striped tbody tr:nth-child(odd) td,
- .zebra-striped tbody tr:nth-child(odd) th {
- background: #f5f5f5;
- }
-
-.carbonad,
-.carbonad-image,
-.carbonad-text,
-.carbonad-tag {
- background: none !important;
- border: none !important;
- margin-left: 0 !important;
-}
-.carbonad-tag {
- margin-top: 6px !important;
- padding-top: 0 !important;
-}
-.carbonad-text {
- height: auto !important;
-}
-.carbonad-image {
- margin-top: 0 !important;
-}
-
-.hidden-text {
- font-size: 12px;
- color: #999;
-}
-
-td.date, th.date {
- text-align: right;
-}
-
-td.date {
- font-style: italic;
-}
-
-form.note input[type="text"], form.note textarea {
- width: 100%;
-}
-
-form hr {
- width: 218px;
- margin: 10px 0px;
-}
-
-form.note textarea {
- height: 250px;
-}
-
-div.content-area {
- min-height: 600px;
-}
-
-hr.footer {
- margin-bottom: 10px;
-}
-
-div.footer {
- margin-bottom: 10px;
- text-align: center;
- font-size: 12px;
-}
-
-form.sign-in {
- margin: 50px 0 0 0;
-}
-
-.sort_arrow {
- text-decoration: none;
-}
-
-.sort_arrow:hover {
- text-decoration: none;
- color: red;
-}
-
-div.sign-in-out-block {
- position: absolute;
- right: 14px;
- top: 8px;
- font-size: 12px;
-}
-
-div.sign-in-out-block a {
- /*text-decoration: none;*/
-}
-
-a.small-red {
- color: red;
- font-size: 12px;
-}
-
-table.notes {
- margin: 0 0 20px 0;
-}
-
-table.notes th.note {
- width: 72%;
-}
-
-table.notes td.pad {
- color: grey;
-}
-
-table.notes td.pad a {
- color: grey;
- text-decoration: underline;
- font-style: normal;
-}
-
-
-table.notes td.pad a:hover {
- color: black;
-}
-
-p.empty {
- color: grey;
- font-style: italic;
-}
-
-a.delete-note {
- float: right;
- font-size: 12px;
- color: red;
-}
-
-.red, input.red {
- color: red !important;
-}
-
-ul.errorlist, ul.errors, .error-message {
- margin: -18px 0 0 0;
-}
-
-ul.errorlist li, ul.errors li, .error-message {
- color: red;
-}
-
-.alert-area {
- text-align: center;
-}
-
-.alert {
- padding: 5px 8px;
- margin: 0 0 12px 0;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
-}
-
-.alert-success {
- color: #468847;
- background-color: #dff0d8;
- border: 1px solid #d6e9c6;
-}
-
-.alert-error {
- color: #b94a48;
- background-color: #f2dede;
- border: 1px solid #eed3d7;
-}
-
- /* Mobile */
- @media only screen and (max-width: 767px) {
- header h1 { font-size: 34px; line-height: 37px; }
- nav { position: relative; }
- nav ul,
- .carbonad {
- display: none;
- }
- #logo { text-align: left; }
- #examples .four.columns {
- padding-top: 30px;
- }
- }
-
- /* Mobile Landscape */
- @media only screen and (min-width: 480px) and (max-width: 767px) {
- nav ul {
- display: none;
- }
- }
-
- /* Non 960 */
- @media only screen and (max-width: 959px) {
- #logo {
- font-size: 21px;
- margin-bottom: 15px; }
- nav .button {
- padding: 9px 20px 11px; }
- }
-
- /* iPad Portrait/Browser */
- @media only screen and (min-width: 768px) and (max-width: 959px) {
- nav {
- width: 124px; }
- }
-
- /* Mobile/Browser */
- @media only screen and (max-width: 767px) {}
-
- /* Mobile Landscape/Browser */
- @media only screen and (min-width: 480px) and (max-width: 767px) {}
-
- /* Anything smaller than standard 960 */
- @media only screen and (max-width: 959px) {}
-
-
- /* iPad Portrait Only */
- @media only screen and (min-width: 768px) and (max-width: 959px) and (max-device-width: 1000px) {}
-
- /* Mobile Only */
- @media only screen and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Mobile Landscape Only */
- @media only screen and (min-width: 480px) and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Anything smaller than standard 960 on a device */
- @media only screen and (max-width: 959px) and (max-device-width: 1000px) {
- .resize { display: none; }
- }
-
diff --git a/cakephp/notejam/webroot/favicon.ico b/cakephp/notejam/webroot/favicon.ico
deleted file mode 100644
index aaac9c853..000000000
Binary files a/cakephp/notejam/webroot/favicon.ico and /dev/null differ
diff --git a/cakephp/notejam/webroot/img/cake.icon.png b/cakephp/notejam/webroot/img/cake.icon.png
deleted file mode 100644
index 394fa42d5..000000000
Binary files a/cakephp/notejam/webroot/img/cake.icon.png and /dev/null differ
diff --git a/cakephp/notejam/webroot/img/cake.power.gif b/cakephp/notejam/webroot/img/cake.power.gif
deleted file mode 100644
index 8f8d570a2..000000000
Binary files a/cakephp/notejam/webroot/img/cake.power.gif and /dev/null differ
diff --git a/cakephp/notejam/webroot/index.php b/cakephp/notejam/webroot/index.php
deleted file mode 100644
index d1e7b66db..000000000
--- a/cakephp/notejam/webroot/index.php
+++ /dev/null
@@ -1,37 +0,0 @@
-dispatch(
- Request::createFromGlobals(),
- new Response()
-);
diff --git a/cakephp/notejam/webroot/js/empty b/cakephp/notejam/webroot/js/empty
deleted file mode 100644
index e69de29bb..000000000
diff --git a/contribute.rst b/contribute.rst
deleted file mode 100644
index 4272d6c7f..000000000
--- a/contribute.rst
+++ /dev/null
@@ -1,152 +0,0 @@
-******************
-Contribution guide
-******************
-
-=========================
-Pull requests and commits
-=========================
-
-Send your pull requests in the ``master`` branch.
-
-Please prepend commit messages with framework name.
-
-**Good** commit messages:
-
-.. code-block::
-
- Django: Implemented signout functionality
-
-.. code-block::
-
- Symfony: Fixed broken pad tests
-
-**Bad** commit messages:
-
-.. code-block::
-
- Implemented signout functionality in django
-
-.. code-block::
-
- Fixed broken symfony pad tests
-
-
-==========
-Code style
-==========
-
-Please follow code style guidelines and best practices for your programming language and framework.
-Specify guidelines in a README file in a code style section.
-
-
-====================
-Application overview
-====================
-
-Notejam is a web application which allows user to sign up/in/out and create/view/edit/delete notes.
-Notes are grouped in pads. See `screenshots `_
-for look and feel.
-
------------------------
-Objects/Models/Entities
------------------------
-
-Structure of objects (aka models or entities) used in the app:
-
-* Note: id, pad_id, user_id, name, text, created_at, updated_at
-* Pad: id, user_id, name
-* User: id, email, password
-
-See recommended `database schema `_ for details.
-
-
------
-Pages
------
-
-All html layouts are sliced and available in the `html `_ folder.
-
-**User pages**
-
-* ``GET /signup/`` - Show Sign Up form
-* ``POST /signup/`` - Sign Up
-* ``GET /signin/`` - Show Sign In form
-* ``POST /signin/`` - Sign In
-* ``GET /signout/`` - Sign out
-* ``GET /forgot-password/`` - Show Forgot password form
-* ``POST /forgot-password/`` - Forgot Password request
-* ``GET /settings/`` - Show user settings form
-* ``POST /settings/`` - Change user settings
-
-
-**Note pages**
-
-
-* ``GET /notes/create/`` - Show Create note form
-* ``POST /notes/create/`` - Create note
-* ``GET /notes//`` - View note
-* ``GET /notes//edit/`` - Show Edit note form
-* ``POST /notes//edit/`` - Edit note
-* ``GET /notes//delete/`` - Show confirmation delete page
-* ``POST /notes//delete/`` - Delete note
-
-
-**Pad pages**
-
-
-* ``GET /pads/create/`` - Show Create pad form
-* ``POST /pads/create/`` - Create pad
-* ``GET /pads//`` - View pad notes
-* ``GET /pads//edit/`` - Show Edit pad form
-* ``POST /pads//edit/`` - Edit pad
-* ``GET /pads//delete/`` - Show confirmation delete page
-* ``POST /pads//delete/`` - Delete pad
-
-
----------------------
-Functional/unit tests
----------------------
-
-Any kind of tests are very desirable.
-
-**Recommended test cases**
-
-Sign Up:
-
-* user can successfully sign up
-* user can't sign up if required fields are missing
-* user can't sign up if email is invalid
-* user can't sign up if email already exists
-* user can't sign up if passwords do not match
-
-Sign In:
-
-* user can successfully sign in
-* user can't sign in if required fields are missing
-* user can't sign in if credentials are wrong
-
-Notes:
-
-* note can be successfully created
-* note can't be created by anonymous user
-* note can't be created if required fields are missing
-* note can be edited by its owner
-* note can't be edited if required fields are missing
-* note can't be edited by not an owner
-* note can't be added into another's user pad
-* note can be viewed by its owner
-* note can't be viewed by not an owner
-* note can be deleted by its owner
-* note can't be deleted by not an owner
-
-Pads:
-
-* pad can be successfully created
-* pad can't be created if required fields are missing
-* pad can be edited by its owner
-* pad can't be edited if required fields are missing
-* pad can't be edited by not an owner
-* pad can be viewed by its owner
-* pad can't be viewed by not an owner
-* pad can be deleted by its owner
-* pad can't be deleted by not an owner
diff --git a/django/README.rst b/django/README.rst
deleted file mode 100644
index bfcdd1ba2..000000000
--- a/django/README.rst
+++ /dev/null
@@ -1,83 +0,0 @@
-***************
-Notejam: Django
-***************
-
-Notejam application implemented using `Django `_ framework.
-
-Django version: 1.6
-
-==========================
-Installation and launching
-==========================
-
------
-Clone
------
-
-Clone the repo:
-
-.. code-block:: bash
-
- $ git clone git@github.com:komarserjio/notejam.git YOUR_PROJECT_DIR/
-
--------
-Install
--------
-Use `virtualenv `_ or `virtualenvwrapper `_
-for `environment management `_.
-
-Install dependencies:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/django/
- $ virtualenv .venv -p python2.7 # This version of Django only works on python2
- $ source .venv/bin/activate
- $ pip install -r requirements.txt
-
-Create database schema:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/django/notejam/
- $ ./manage.py syncdb
- $ ./manage.py migrate
-
-------
-Launch
-------
-
-Start django web server:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/django/notejam/
- $ ./manage.py runserver
-
-Go to http://127.0.0.1:8000/ in your browser.
-
----------
-Run tests
----------
-
-Run functional and unit tests:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/django/notejam/
- $ ./manage.py test
-
-
-============
-Contribution
-============
-Do you have python/django experience? Help the app to follow python and django best practices.
-
-Please send your pull requests in the ``master`` branch.
-Always prepend your commits with framework name:
-
-.. code-block:: bash
-
- Django: Implemented sign in functionality
-
-Read `contribution guide `_ for details.
diff --git a/django/notejam/manage.py b/django/notejam/manage.py
deleted file mode 100755
index 6b90f3bb6..000000000
--- a/django/notejam/manage.py
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env python
-import os
-import sys
-
-if __name__ == "__main__":
- os.environ.setdefault("DJANGO_SETTINGS_MODULE", "notejam.settings")
-
- from django.core.management import execute_from_command_line
-
- execute_from_command_line(sys.argv)
diff --git a/django/notejam/notejam/__init__.py b/django/notejam/notejam/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/django/notejam/notejam/settings.py b/django/notejam/notejam/settings.py
deleted file mode 100644
index 19991825b..000000000
--- a/django/notejam/notejam/settings.py
+++ /dev/null
@@ -1,184 +0,0 @@
-import os
-
-DEBUG = True
-TEMPLATE_DEBUG = DEBUG
-ALLOWED_HOSTS = []
-
-PROJECT_DIR = "{}/../".format(os.path.dirname(__file__))
-
-ADMINS = (
- ('Sergey Komar', 'komarserjio@gmail.com'),
-)
-
-MANAGERS = ADMINS
-
-DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.sqlite3',
- 'NAME': 'notejam.db',
- 'USER': '',
- 'PASSWORD': '',
- 'HOST': '',
- 'PORT': '',
- }
-}
-
-# Local time zone for this installation. Choices can be found here:
-# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
-# although not all choices may be available on all operating systems.
-# In a Windows environment this must be set to your system time zone.
-TIME_ZONE = 'Europe/Kiev'
-
-# Language code for this installation. All choices can be found here:
-# http://www.i18nguy.com/unicode/language-identifiers.html
-LANGUAGE_CODE = 'en-us'
-
-SITE_ID = 1
-
-# If you set this to False, Django will make some optimizations so as not
-# to load the internationalization machinery.
-USE_I18N = True
-
-# If you set this to False, Django will not format dates, numbers and
-# calendars according to the current locale.
-USE_L10N = True
-
-# If you set this to False, Django will not use timezone-aware datetimes.
-USE_TZ = True
-
-# Absolute filesystem path to the directory that will hold user-uploaded files.
-# Example: "/home/media/media.lawrence.com/media/"
-MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media/')
-
-# URL that handles the media served from MEDIA_ROOT. Make sure to use a
-# trailing slash.
-# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
-MEDIA_URL = ''
-
-# Absolute path to the directory static files should be collected to.
-# Don't put anything in this directory yourself; store your static files
-# in apps' "static/" subdirectories and in STATICFILES_DIRS.
-# Example: "/home/media/media.lawrence.com/static/"
-STATIC_ROOT = os.path.join(PROJECT_DIR, 'static/')
-
-# URL prefix for static files.
-# Example: "http://media.lawrence.com/static/"
-STATIC_URL = '/static/'
-
-# Additional locations of static files
-STATICFILES_DIRS = (
- os.path.join(PROJECT_DIR, 'static_files/'),
-)
-
-# List of finder classes that know how to find static files in
-# various locations.
-STATICFILES_FINDERS = (
- 'django.contrib.staticfiles.finders.FileSystemFinder',
- 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
-# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
-)
-
-# Make this unique, and don't share it with anybody.
-SECRET_KEY = 'g+cy2q816xje*f#k=9z!e*t%h-7tt(tbo$q^1n)l0gd1=x8$65'
-
-# List of callables that know how to import templates from various sources.
-TEMPLATE_LOADERS = (
- 'django.template.loaders.filesystem.Loader',
- 'django.template.loaders.app_directories.Loader',
-# 'django.template.loaders.eggs.Loader',
-)
-
-TEMPLATE_CONTEXT_PROCESSORS = (
- "django.contrib.auth.context_processors.auth",
- "django.core.context_processors.debug",
- "django.core.context_processors.i18n",
- "django.core.context_processors.media",
- "django.core.context_processors.static",
- "django.core.context_processors.tz",
- "django.core.context_processors.request",
- "django.contrib.messages.context_processors.messages"
-)
-
-MIDDLEWARE_CLASSES = (
- 'django.middleware.common.CommonMiddleware',
- 'django.contrib.sessions.middleware.SessionMiddleware',
- 'django.middleware.csrf.CsrfViewMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.messages.middleware.MessageMiddleware',
- # Uncomment the next line for simple clickjacking protection:
- # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
-)
-
-ROOT_URLCONF = 'notejam.urls'
-
-APPEND_SLASH = True
-
-# Python dotted path to the WSGI application used by Django's runserver.
-WSGI_APPLICATION = 'notejam.wsgi.application'
-
-TEMPLATE_DIRS = (
- os.path.join(PROJECT_DIR, 'templates/'),
-)
-
-INSTALLED_APPS = (
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.sites',
- 'django.contrib.messages',
- 'django.contrib.staticfiles',
- #'django.contrib.admin',
- 'pads',
- 'notes',
- 'users',
- 'south',
-)
-
-AUTHENTICATION_BACKENDS = (
- 'users.auth_backends.EmailModelBackend',
- 'django.contrib.auth.backends.ModelBackend',
-)
-
-LOGIN_URL = '/signin/'
-LOGOUT_URL = '/signout/'
-
-# development email file-based backend
-EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend'
-EMAIL_FILE_PATH = '/tmp'
-
-# A sample logging configuration. The only tangible logging
-# performed by this configuration is to send an email to
-# the site admins on every HTTP 500 error when DEBUG=False.
-# See http://docs.djangoproject.com/en/dev/topics/logging for
-# more details on how to customize your logging configuration.
-LOGGING = {
- 'version': 1,
- 'disable_existing_loggers': False,
- 'filters': {
- 'require_debug_false': {
- '()': 'django.utils.log.RequireDebugFalse'
- }
- },
- 'handlers': {
- 'mail_admins': {
- 'level': 'ERROR',
- 'filters': ['require_debug_false'],
- 'class': 'django.utils.log.AdminEmailHandler'
- }
- },
- 'loggers': {
- 'django.request': {
- 'handlers': ['mail_admins'],
- 'level': 'ERROR',
- 'propagate': True,
- },
- }
-}
-
-# custom test runner
-TEST_RUNNER = 'notejam.tests.AdvancedTestSuiteRunner'
-
-# exclude non app tests
-TEST_EXCLUDE = (
- 'django',
-)
diff --git a/django/notejam/notejam/tests.py b/django/notejam/notejam/tests.py
deleted file mode 100644
index af2615253..000000000
--- a/django/notejam/notejam/tests.py
+++ /dev/null
@@ -1,36 +0,0 @@
-from django.test.simple import DjangoTestSuiteRunner
-from django.conf import settings
-from django.contrib.auth.models import User
-
-
-EXCLUDED_APPS = getattr(settings, 'TEST_EXCLUDE', [])
-
-
-# based on http://djangosnippets.org/snippets/2211/
-# main approach is to ignore library tests
-class AdvancedTestSuiteRunner(DjangoTestSuiteRunner):
- def __init__(self, *args, **kwargs):
- # to avoid circular import
- from django.conf import settings
- settings.TESTING = True
- super(AdvancedTestSuiteRunner, self).__init__(*args, **kwargs)
-
- def build_suite(self, *args, **kwargs):
- suite = super(AdvancedTestSuiteRunner, self).build_suite(*args,
- **kwargs)
- if not args[0] and not getattr(settings, 'RUN_ALL_TESTS', False):
- tests = []
- for case in suite:
- pkg = case.__class__.__module__.split('.')[0]
- if pkg not in EXCLUDED_APPS:
- tests.append(case)
- suite._tests = tests
- return suite
-
-
-# helper test functions
-def create_user(user_data):
- user = User.objects.create(username=user_data['email'], **user_data)
- user.set_password(user_data['password'])
- user.save()
- return user
diff --git a/django/notejam/notejam/urls.py b/django/notejam/notejam/urls.py
deleted file mode 100644
index d3be6875b..000000000
--- a/django/notejam/notejam/urls.py
+++ /dev/null
@@ -1,25 +0,0 @@
-from django.conf.urls import patterns, include, url
-from django.contrib.auth.decorators import login_required
-
-from users.views import (SignupView, SigninView, AccountSettingsView,
-ForgotPasswordView)
-from notes.views import NoteListView
-
-urlpatterns = patterns('',
- # user relates urls
- url(r'^signup/', SignupView.as_view(), name='signup'),
- url(r'^signin/', SigninView.as_view(), name='signin'),
- url(r'^account/', login_required(AccountSettingsView.as_view()),
- name='account_settings'),
- url(r'^forgot-password/', ForgotPasswordView.as_view(),
- name='forgot_password'),
- url(r'^signout/$', 'django.contrib.auth.views.logout',
- {'next_page': '/'}, name='signout'),
-
- # notes
- url(r'^notes/', include('notes.urls')),
- # pads
- url(r'^pads/', include('pads.urls')),
-
- url(r'^$', login_required(NoteListView.as_view()), name='home'),
-)
diff --git a/django/notejam/notejam/wsgi.py b/django/notejam/notejam/wsgi.py
deleted file mode 100644
index 1a69fe50f..000000000
--- a/django/notejam/notejam/wsgi.py
+++ /dev/null
@@ -1,28 +0,0 @@
-"""
-WSGI config for notejam project.
-
-This module contains the WSGI application used by Django's development server
-and any production WSGI deployments. It should expose a module-level variable
-named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover
-this application via the ``WSGI_APPLICATION`` setting.
-
-Usually you will have the standard Django WSGI application here, but it also
-might make sense to replace the whole Django WSGI application with a custom one
-that later delegates to the Django one. For example, you could introduce WSGI
-middleware here, or combine a Django application with an application of another
-framework.
-
-"""
-import os
-
-os.environ.setdefault("DJANGO_SETTINGS_MODULE", "notejam.settings")
-
-# This application object is used by any WSGI server configured to use this
-# file. This includes Django's development server, if the WSGI_APPLICATION
-# setting points here.
-from django.core.wsgi import get_wsgi_application
-application = get_wsgi_application()
-
-# Apply WSGI middleware here.
-# from helloworld.wsgi import HelloWorldApplication
-# application = HelloWorldApplication(application)
diff --git a/django/notejam/notes/__init__.py b/django/notejam/notes/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/django/notejam/notes/forms.py b/django/notejam/notes/forms.py
deleted file mode 100644
index f42e6a4bc..000000000
--- a/django/notejam/notes/forms.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from django import forms
-
-from notes.models import Note
-
-
-class NoteForm(forms.ModelForm):
- class Meta:
- model = Note
- exclude = ('created_at', 'updated_at', 'user')
diff --git a/django/notejam/notes/migrations/0001_initial.py b/django/notejam/notes/migrations/0001_initial.py
deleted file mode 100644
index 9c1489759..000000000
--- a/django/notejam/notes/migrations/0001_initial.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# -*- coding: utf-8 -*-
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- # Adding model 'Note'
- db.create_table('notes_note', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('pad', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['pads.Pad'], null=True)),
- ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=100)),
- ('text', self.gf('django.db.models.fields.TextField')()),
- ('created_at', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
- ('updated_at', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
- ))
- db.send_create_signal('notes', ['Note'])
-
-
- def backwards(self, orm):
- # Deleting model 'Note'
- db.delete_table('notes_note')
-
-
- models = {
- 'auth.group': {
- 'Meta': {'object_name': 'Group'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
- 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
- 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
- },
- 'auth.user': {
- 'Meta': {'object_name': 'User'},
- 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
- 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
- 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
- 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
- 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
- },
- 'notes.note': {
- 'Meta': {'object_name': 'Note'},
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'pad': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['pads.Pad']", 'null': 'True'}),
- 'text': ('django.db.models.fields.TextField', [], {}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
- },
- 'pads.pad': {
- 'Meta': {'object_name': 'Pad'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
- }
- }
-
- complete_apps = ['notes']
\ No newline at end of file
diff --git a/django/notejam/notes/migrations/__init__.py b/django/notejam/notes/migrations/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/django/notejam/notes/models.py b/django/notejam/notes/models.py
deleted file mode 100644
index 055ab8000..000000000
--- a/django/notejam/notes/models.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from django.contrib.auth.models import User
-from django.db import models
-
-from pads.models import Pad
-
-
-class Note(models.Model):
- pad = models.ForeignKey(Pad, null=True, blank=True)
- user = models.ForeignKey(User)
- name = models.CharField(max_length=100)
- text = models.TextField()
- created_at = models.DateTimeField(auto_now_add=True)
- updated_at = models.DateTimeField(auto_now=True)
diff --git a/django/notejam/notes/templates/notes/note_confirm_delete.html b/django/notejam/notes/templates/notes/note_confirm_delete.html
deleted file mode 100644
index c06b5f5e5..000000000
--- a/django/notejam/notes/templates/notes/note_confirm_delete.html
+++ /dev/null
@@ -1,13 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}{{ note.name }}{% endblock %}
-{% block page_title %}{{ note.name }} {% endblock %}
-
-{% block content %}
- Are you sure you want to delete {{ note.name }}?
-
-{% endblock %}
diff --git a/django/notejam/notes/templates/notes/note_create.html b/django/notejam/notes/templates/notes/note_create.html
deleted file mode 100644
index fd38ecb14..000000000
--- a/django/notejam/notes/templates/notes/note_create.html
+++ /dev/null
@@ -1,8 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}New note{% endblock %}
-{% block page_title %}New note {% endblock %}
-
-{% block content %}
- {% include "notes/note_form.html" %}
-{% endblock %}
diff --git a/django/notejam/notes/templates/notes/note_detail.html b/django/notejam/notes/templates/notes/note_detail.html
deleted file mode 100644
index 2390b9df9..000000000
--- a/django/notejam/notes/templates/notes/note_detail.html
+++ /dev/null
@@ -1,14 +0,0 @@
-{% extends "base.html" %}
-{% load date_tags %}
-
-{% block title %}{{note.name}}{%endblock%}
-{% block page_title %}{{note.name}} {%endblock%}
-
-{% block content %}
- Last edited {{ note.updated_at|smart_date }}
-
- {{ note.text }}
-
- Edit
- Delete it
-{% endblock %}
diff --git a/django/notejam/notes/templates/notes/note_edit.html b/django/notejam/notes/templates/notes/note_edit.html
deleted file mode 100644
index 145216fa0..000000000
--- a/django/notejam/notes/templates/notes/note_edit.html
+++ /dev/null
@@ -1,8 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}{{ note.name }}{% endblock %}
-{% block page_title %}{{ note.name }} {% endblock %}
-
-{% block content %}
- {% include "notes/note_form.html" %}
-{% endblock %}
diff --git a/django/notejam/notes/templates/notes/note_form.html b/django/notejam/notes/templates/notes/note_form.html
deleted file mode 100644
index 120e87efc..000000000
--- a/django/notejam/notes/templates/notes/note_form.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
diff --git a/django/notejam/notes/templates/notes/note_list.html b/django/notejam/notes/templates/notes/note_list.html
deleted file mode 100644
index f1c9f5080..000000000
--- a/django/notejam/notes/templates/notes/note_list.html
+++ /dev/null
@@ -1,33 +0,0 @@
-{% extends "base.html" %}
-{% load date_tags %}
-
-{% block title %}All notes ({{ notes.count }}){% endblock %}
-{% block page_title %}All notes ({{ notes.count }}) {% endblock %}
-
-{% block content %}
- {% if notes %}
-
-
- Note ↓ ↑
- Pad
- Last modified ↓ ↑
-
- {% for note in notes %}
-
- {{ note.name }}
-
- {% if note.pad %}
- {{ note.pad.name }}
- {% else %}
- No pad
- {% endif %}
-
- {{ note.updated_at|smart_date }}
-
- {% endfor %}
-
- {% else %}
- Create your first note.
- {% endif %}
- New note
-{% endblock %}
diff --git a/django/notejam/notes/templatetags/__init__.py b/django/notejam/notes/templatetags/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/django/notejam/notes/templatetags/date_tags.py b/django/notejam/notes/templatetags/date_tags.py
deleted file mode 100644
index acc17a0c0..000000000
--- a/django/notejam/notes/templatetags/date_tags.py
+++ /dev/null
@@ -1,17 +0,0 @@
-from datetime import date
-from django import template
-
-register = template.Library()
-
-
-@register.filter
-def smart_date(updated_at):
- delta = date.today() - updated_at.date()
- if delta.days == 0:
- return 'Today at {}'.format(updated_at.strftime("%H:%M"))
- elif delta.days == 1:
- return 'Yesterday at {}'.format(updated_at.strftime("%H:%M"))
- elif 1 > delta.days > 4:
- return '{} days ago'.format(abs(delta.days))
- else:
- return updated_at.date()
diff --git a/django/notejam/notes/tests.py b/django/notejam/notes/tests.py
deleted file mode 100644
index e99e18798..000000000
--- a/django/notejam/notes/tests.py
+++ /dev/null
@@ -1,110 +0,0 @@
-from django.core.urlresolvers import reverse
-from django.test import TestCase, Client
-
-from notejam.tests import create_user
-from notes.models import Note
-
-
-class NoteTest(TestCase):
- def setUp(self):
- user_data = {
- 'email': 'user@example.com',
- 'password': 'secure_password'
- }
- self.user = create_user(user_data)
- self.client.login(**user_data)
-
- def test_create_success(self):
- self.client.post(
- reverse('create_note'), {'name': 'pad', 'text': 'pad text'})
- self.assertEqual(1, Note.objects.count())
-
- def test_create_fail_required_fields(self):
- response = self.client.post(reverse('create_note'), {})
- self.assertEqual(
- set(['name', 'text']), set(response.context['form'].errors.keys()))
-
- def test_edit_success(self):
- note_data = {
- 'name': 'note name',
- 'text': 'note text'
- }
- note = Note.objects.create(user=self.user, **note_data)
-
- note_data['name'] = 'new name'
- response = self.client.post(
- reverse('edit_note', args=(note.id,)), note_data)
- self.assertRedirects(response, reverse('home'))
- self.assertEqual(note_data['name'], Note.objects.get(id=note.id).name)
-
- def test_another_user_cant_edit(self):
- user_data = {
- 'email': 'another_user@example.com',
- 'password': 'another_secure_password'
- }
- create_user(user_data)
-
- note_data = {
- 'name': 'note name',
- 'text': 'note text'
- }
- note = Note.objects.create(user=self.user, **note_data)
-
- client = Client()
- client.login(**user_data)
- response = client.post(reverse('edit_note', args=(note.id,)), {})
- self.assertEqual(404, response.status_code)
-
- def test_view_success(self):
- note_data = {
- 'name': 'note name',
- 'text': 'note text'
- }
- note = Note.objects.create(user=self.user, **note_data)
- response = self.client.get(reverse('view_note', args=(note.id,)), {})
- self.assertEqual(note, response.context['note'])
-
- def test_another_user_cant_view(self):
- user_data = {
- 'email': 'another_user@example.com',
- 'password': 'another_secure_password'
- }
- create_user(user_data)
-
- note_data = {
- 'name': 'note name',
- 'text': 'note text'
- }
- note = Note.objects.create(user=self.user, **note_data)
-
- client = Client()
- client.login(**user_data)
- response = client.get(reverse('view_note', args=(note.id,)), {})
- self.assertEqual(404, response.status_code)
-
- def test_delete_success(self):
- note_data = {
- 'name': 'note name',
- 'text': 'note text'
- }
- note = Note.objects.create(user=self.user, **note_data)
- self.client.post(reverse('delete_note', args=(note.id,)), {})
- self.assertEqual(0, Note.objects.count())
-
- def test_another_user_cant_delete(self):
- user_data = {
- 'email': 'another_user@example.com',
- 'password': 'another_secure_password'
- }
- create_user(user_data)
-
- note_data = {
- 'name': 'note name',
- 'text': 'note text'
- }
- note = Note.objects.create(user=self.user, **note_data)
-
- client = Client()
- client.login(**user_data)
- response = client.get(reverse('view_note', args=(note.id,)), {})
- self.assertEqual(404, response.status_code)
diff --git a/django/notejam/notes/urls.py b/django/notejam/notes/urls.py
deleted file mode 100644
index 8f12af5c5..000000000
--- a/django/notejam/notes/urls.py
+++ /dev/null
@@ -1,21 +0,0 @@
-from django.conf.urls import patterns, url
-from django.contrib.auth.decorators import login_required
-
-from notes.views import (NoteCreateView, NoteDeleteView,
-NoteDetailView, NoteUpdateView)
-
-
-# Uncomment the next two lines to enable the admin:
-# from django.contrib import admin
-# admin.autodiscover()
-
-urlpatterns = patterns('notes.views',
- url(r'^create/$', login_required(NoteCreateView.as_view()),
- name='create_note'),
- url(r'^(?P\d+)/$', login_required(NoteDetailView.as_view()),
- name='view_note'),
- url(r'^(?P\d+)/edit/$', login_required(NoteUpdateView.as_view()),
- name='edit_note'),
- url(r'^(?P\d+)/delete/$', login_required(NoteDeleteView.as_view()),
- name='delete_note'),
-)
diff --git a/django/notejam/notes/views.py b/django/notejam/notes/views.py
deleted file mode 100644
index 36fa8ebe2..000000000
--- a/django/notejam/notes/views.py
+++ /dev/null
@@ -1,110 +0,0 @@
-from django.contrib import messages
-from django.core.urlresolvers import reverse_lazy
-from django.shortcuts import redirect
-from django.views.generic.edit import CreateView, UpdateView, DeleteView
-from django.views.generic.detail import DetailView
-from django.views.generic import ListView
-
-
-from notes.models import Note, Pad
-from notes.forms import NoteForm
-
-
-class NoteCreateView(CreateView):
- model = Note
- form_class = NoteForm
- template_name_suffix = '_create'
- success_message = 'Note is successfully created'
-
- def get_initial(self):
- return {'pad': self.request.GET.get('pad', None)}
-
- def get_form(self, form_class):
- form = super(NoteCreateView, self).get_form(self.get_form_class())
- # limit pad choice
- form.fields['pad'].queryset = Pad.objects.filter(
- user=self.request.user
- )
- return form
-
- def form_valid(self, form):
- self.object = form.save(commit=False)
- self.object.user = self.request.user
- self.object.save()
- messages.success(self.request, self.success_message)
- return redirect(self.get_success_url())
-
- def get_success_url(self):
- if self.object.pad is not None:
- return reverse_lazy(
- 'view_pad_notes', kwargs={'pk': self.object.pad.id}
- )
- else:
- return reverse_lazy('home')
-
-
-class NoteUpdateView(UpdateView):
- model = Note
- form_class = NoteForm
- success_url = reverse_lazy('home')
- template_name_suffix = '_edit'
- success_message = 'Note is successfully updated'
-
- def form_valid(self, form):
- messages.success(self.request, self.success_message)
- return super(NoteUpdateView, self).form_valid(form)
-
- def get_queryset(self):
- qs = super(NoteUpdateView, self).get_queryset()
- return qs.filter(user=self.request.user)
-
- def get_form(self, form_class):
- form = super(NoteUpdateView, self).get_form(self.get_form_class())
- # limit pad choice
- form.fields['pad'].queryset = Pad.objects.filter(
- user=self.request.user
- )
- return form
-
- def get_success_url(self):
- if self.object.pad is not None:
- return reverse_lazy(
- 'view_pad_notes', kwargs={'pk': self.object.pad.id}
- )
- else:
- return reverse_lazy('home')
-
-
-class NoteDeleteView(DeleteView):
- model = Note
-
- def get_queryset(self):
- qs = super(NoteDeleteView, self).get_queryset()
- return qs.filter(user=self.request.user)
-
- def get_success_url(self):
- if self.object.pad is not None:
- return reverse_lazy(
- 'view_pad_notes', kwargs={'pk': self.object.pad.id}
- )
- else:
- return reverse_lazy('home')
-
-
-class NoteDetailView(DetailView):
- model = Note
-
- def get_queryset(self):
- qs = super(NoteDetailView, self).get_queryset()
- return qs.filter(user=self.request.user)
-
-
-class NoteListView(ListView):
- model = Note
- context_object_name = 'notes'
- order_by = '-updated_at'
-
- def get_queryset(self):
- qs = super(NoteListView, self).get_queryset()
- order_by = self.request.GET.get('order', self.order_by)
- return qs.filter(user=self.request.user).order_by(order_by)
diff --git a/django/notejam/pads/__init__.py b/django/notejam/pads/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/django/notejam/pads/forms.py b/django/notejam/pads/forms.py
deleted file mode 100644
index b2bf2665a..000000000
--- a/django/notejam/pads/forms.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from django import forms
-
-from pads.models import Pad
-
-
-class PadForm(forms.ModelForm):
- class Meta:
- model = Pad
- exclude = ('user',)
diff --git a/django/notejam/pads/migrations/0001_initial.py b/django/notejam/pads/migrations/0001_initial.py
deleted file mode 100644
index 095fb8c12..000000000
--- a/django/notejam/pads/migrations/0001_initial.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# -*- coding: utf-8 -*-
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- # Adding model 'Pad'
- db.create_table('pads_pad', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=100)),
- ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
- ))
- db.send_create_signal('pads', ['Pad'])
-
-
- def backwards(self, orm):
- # Deleting model 'Pad'
- db.delete_table('pads_pad')
-
-
- models = {
- 'auth.group': {
- 'Meta': {'object_name': 'Group'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
- 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
- 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
- },
- 'auth.user': {
- 'Meta': {'object_name': 'User'},
- 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
- 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
- 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
- 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
- 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
- },
- 'pads.pad': {
- 'Meta': {'object_name': 'Pad'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
- }
- }
-
- complete_apps = ['pads']
\ No newline at end of file
diff --git a/django/notejam/pads/migrations/__init__.py b/django/notejam/pads/migrations/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/django/notejam/pads/models.py b/django/notejam/pads/models.py
deleted file mode 100644
index 673c1e9ce..000000000
--- a/django/notejam/pads/models.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from django.contrib.auth.models import User
-from django.db import models
-
-
-class Pad(models.Model):
- name = models.CharField(max_length=100)
- user = models.ForeignKey(User)
-
- def __unicode__(self):
- return self.name
diff --git a/django/notejam/pads/templates/pads/pad_confirm_delete.html b/django/notejam/pads/templates/pads/pad_confirm_delete.html
deleted file mode 100644
index 4a2270905..000000000
--- a/django/notejam/pads/templates/pads/pad_confirm_delete.html
+++ /dev/null
@@ -1,14 +0,0 @@
-{% extends "base.html" %}
-
-{% block breadcrumbs %}Delete {{ pad.name }} {% endblock %}
-{% block content %}
- Are you sure you want to delete {{ pad.name }} and all related notes?
-
-{% endblock %}
-
-
-
diff --git a/django/notejam/pads/templates/pads/pad_create.html b/django/notejam/pads/templates/pads/pad_create.html
deleted file mode 100644
index 77506cf8c..000000000
--- a/django/notejam/pads/templates/pads/pad_create.html
+++ /dev/null
@@ -1,9 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}New pad{% endblock %}
-{% block page_title %}New pad {% endblock %}
-
-{% block content %}
- {% include "pads/pad_form.html" %}
-{% endblock %}
-
diff --git a/django/notejam/pads/templates/pads/pad_edit.html b/django/notejam/pads/templates/pads/pad_edit.html
deleted file mode 100644
index 1e7fa62cf..000000000
--- a/django/notejam/pads/templates/pads/pad_edit.html
+++ /dev/null
@@ -1,11 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}{{ pad.name }}{% endblock %}
-{% block page_title %}{{ pad.name }} {% endblock %}
-
-{% block content %}
- {% include "pads/pad_form.html" %}
- Delete pad
-{% endblock %}
-
-
diff --git a/django/notejam/pads/templates/pads/pad_form.html b/django/notejam/pads/templates/pads/pad_form.html
deleted file mode 100644
index fd678c0b9..000000000
--- a/django/notejam/pads/templates/pads/pad_form.html
+++ /dev/null
@@ -1,7 +0,0 @@
-
diff --git a/django/notejam/pads/templates/pads/pad_note_list.html b/django/notejam/pads/templates/pads/pad_note_list.html
deleted file mode 100644
index c04602836..000000000
--- a/django/notejam/pads/templates/pads/pad_note_list.html
+++ /dev/null
@@ -1,29 +0,0 @@
-{% extends "base.html" %}
-{% load date_tags %}
-
-{% block title %}{{ pad.name }} ({{ notes.count }}){%endblock%}
-{% block page_title %}{{ pad.name }} ({{ notes.count }}) {%endblock%}
-
-{% block content %}
- {% if notes %}
-
-
- Note ↓ ↑
- Last modified ↓ ↑
-
- {% for note in notes %}
-
- {{ note.name }}
- {{ note.updated_at|smart_date }}
-
- {% endfor %}
-
- {% else %}
- Create your first note in the pad.
- {% endif %}
- New note
- Pad settings
-{% endblock %}
-
-
-
diff --git a/django/notejam/pads/templatetags/__init__.py b/django/notejam/pads/templatetags/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/django/notejam/pads/templatetags/pad_tags.py b/django/notejam/pads/templatetags/pad_tags.py
deleted file mode 100644
index eb029b146..000000000
--- a/django/notejam/pads/templatetags/pad_tags.py
+++ /dev/null
@@ -1,31 +0,0 @@
-from django import template
-
-from pads.models import Pad
-
-register = template.Library()
-
-
-def do_get_pads(parser, token):
- try:
- tag_name, as_, var_name = token.split_contents()
- except ValueError:
- raise template.TemplateSyntaxError(
- "%r tag requires a single argument - var name"
- % token.contents.split()[0]
- )
- if as_ != 'as':
- raise template.TemplateSyntaxError(
- "Format is: %r as VARNAME" % tag_name
- )
- return GetPadsNode(var_name)
-
-
-class GetPadsNode(template.Node):
- def __init__(self, var_name):
- self.var_name = var_name
-
- def render(self, context):
- context[self.var_name] = Pad.objects.filter(user=context['user'])
- return ''
-
-register.tag('get_pads', do_get_pads)
diff --git a/django/notejam/pads/tests.py b/django/notejam/pads/tests.py
deleted file mode 100644
index d76e87109..000000000
--- a/django/notejam/pads/tests.py
+++ /dev/null
@@ -1,49 +0,0 @@
-from django.core.urlresolvers import reverse
-from django.test import TestCase, Client
-
-from notejam.tests import create_user
-from pads.models import Pad
-
-
-class PadTest(TestCase):
- def setUp(self):
- user_data = {
- 'email': 'user@example.com',
- 'password': 'secure_password'
- }
- self.user = create_user(user_data)
- self.client.login(**user_data)
-
- def _create_pads(self, pads):
- return [
- (lambda pad: Pad.objects.create(name=pad, user=self.user).id)(pad)
- for pad in pads
- ]
-
- def test_create_success(self):
- self.client.post(reverse('create_pad'), {'name': 'pad'})
- self.assertEqual(1, Pad.objects.count())
-
- def test_create_fail_required_name(self):
- response = self.client.post(reverse('create_pad'), {})
- self.assertIn('name', response.context['form'].errors)
-
- def test_edit_success(self):
- id = self._create_pads(['pad'])[0]
- data = {'name': 'new name'}
- response = self.client.post(reverse('edit_pad', args=(id,)), data)
- self.assertRedirects(response, reverse('view_pad_notes', args=(id,)))
- self.assertEqual(data['name'], Pad.objects.get(id=id).name)
-
- def test_another_user_cant_edit_pad(self):
- user_data = {
- 'email': 'another_user@example.com',
- 'password': 'another_secure_password'
- }
- create_user(user_data)
-
- client = Client()
- client.login(**user_data)
- id = self._create_pads(['pad'])[0]
- response = client.post(reverse('edit_pad', args=(id,)), {})
- self.assertEqual(404, response.status_code)
diff --git a/django/notejam/pads/urls.py b/django/notejam/pads/urls.py
deleted file mode 100644
index bec671a6a..000000000
--- a/django/notejam/pads/urls.py
+++ /dev/null
@@ -1,16 +0,0 @@
-from django.conf.urls import patterns, url
-from django.contrib.auth.decorators import login_required
-
-from pads.views import (PadCreateView, PadNotesListView, PadUpdateView,
-PadDeleteView)
-
-urlpatterns = patterns('',
- url(r'^create/$', login_required(PadCreateView.as_view()),
- name='create_pad'),
- url(r'^(?P\d+)/$', login_required(PadNotesListView.as_view()),
- name='view_pad_notes'),
- url(r'^(?P\d+)/edit/$', login_required(PadUpdateView.as_view()),
- name='edit_pad'),
- url(r'^(?P\d+)/delete/$', login_required(PadDeleteView.as_view()),
- name='delete_pad'),
-)
diff --git a/django/notejam/pads/views.py b/django/notejam/pads/views.py
deleted file mode 100644
index 8d3211462..000000000
--- a/django/notejam/pads/views.py
+++ /dev/null
@@ -1,79 +0,0 @@
-from django.contrib import messages
-from django.core.urlresolvers import reverse_lazy
-from django.shortcuts import redirect
-from django.shortcuts import get_object_or_404
-from django.views.generic.edit import CreateView, UpdateView, DeleteView
-from django.views.generic import ListView
-
-
-from pads.models import Pad
-from notes.models import Note
-from pads.forms import PadForm
-
-
-class PadCreateView(CreateView):
- model = Pad
- form_class = PadForm
- template_name_suffix = '_create'
- success_url = reverse_lazy('home')
- success_message = 'Pad is successfully created'
-
- def form_valid(self, form):
- self.object = form.save(commit=False)
- self.object.user = self.request.user
- self.object.save()
- messages.success(self.request, self.success_message)
- return redirect(self.get_success_url())
-
- def get_success_url(self):
- return reverse_lazy("view_pad_notes", kwargs={'pk': self.object.pk})
-
-
-class PadUpdateView(UpdateView):
- model = Pad
- form_class = PadForm
- template_name_suffix = '_edit'
- success_url = reverse_lazy('home')
- success_message = 'Pad is successfully updated'
-
- def form_valid(self, form):
- messages.success(self.request, self.success_message)
- return super(PadUpdateView, self).form_valid(form)
-
- def get_queryset(self):
- qs = super(PadUpdateView, self).get_queryset()
- return qs.filter(user=self.request.user)
-
- def get_success_url(self):
- return reverse_lazy("view_pad_notes", kwargs={'pk': self.object.pk})
-
-
-# Note list mixed with pad details data
-class PadNotesListView(ListView):
- model = Note
- context_object_name = 'notes'
- order_by = '-updated_at'
- template_name = 'pads/pad_note_list.html'
-
- def get_queryset(self):
- order_by = self.request.GET.get('order', self.order_by)
- return self.get_pad().note_set.all().order_by(order_by)
-
- def get_pad(self):
- return get_object_or_404(
- Pad, pk=int(self.kwargs.get('pk')), user=self.request.user
- )
-
- def get_context_data(self, **kwargs):
- context = super(PadNotesListView, self).get_context_data(**kwargs)
- context['pad'] = self.get_pad()
- return context
-
-
-class PadDeleteView(DeleteView):
- model = Pad
- success_url = reverse_lazy("home")
-
- def get_queryset(self):
- qs = super(PadDeleteView, self).get_queryset()
- return qs.filter(user=self.request.user)
diff --git a/django/notejam/static_files/css/style.css b/django/notejam/static_files/css/style.css
deleted file mode 100644
index 86cd131ff..000000000
--- a/django/notejam/static_files/css/style.css
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
-* Skeleton V1.0.3
-* Copyright 2011, Dave Gamache
-* www.getskeleton.com
-* Free to use under the MIT license.
-* http://www.opensource.org/licenses/mit-license.php
-* 7/17/2011
-*/
-
-
-/* Documentation Styles
-================================================== */
- div.container {
- padding-top: 40px; }
-
- /* Doc nav */
- nav {
- width: 160px; }
- #logo, .bold-header {
- margin-bottom: 30px;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- letter-spacing: -1px;
- color: #555;
- font-weight: bold; }
- .bold-header span {
- font-weight: normal;
- font-size: 23px;
- }
- .bold-header a.header {
- text-decoration: none;
- color: inherit;
- }
- .bold-header span.jam {
- font-size: 46px;
- line-height: 50px;
- }
- nav ul {
- float: left; }
- nav ul li {
- display: block;
- margin-bottom: 10px; }
- nav ul li a,
- nav ul li a:visited,
- nav ul li a:active {
- font-size: 14px;
- color: #555;
- text-decoration: none;
- font-weight: bold; }
- nav ul li a:hover,
- nav ul li a:focus {
- color: #222; }
- header h1 {
- font-size: 52px;
- line-height: 61px;
- letter-spacing: -1px;
- font-weight: normal;
- font-family: "Georgia", "Times New Roman", Helvetica, Arial, sans-serif; }
- hr.large {
- border: none;
- height: 8px;
- background: #ebebeb;
- margin: 50px 0; }
- div.doc-section {
- margin: 30px 0; }
-
- #whatAndWhy .row {
- padding: 30px 0 0; }
-
- #typography blockquote {
- margin-top: 20px; }
-
- .hidden-code a {
- font-size: 12px;
- color: #999; }
- .hidden-code>div {
- display: none; }
-
-
- /* Grid */
- #grid .column,
- #grid .columns {
- background: #ddd;
- height: 25px;
- line-height: 25px;
- margin-bottom: 10px;
- text-align: center;
- text-transform: uppercase;
- color: #555;
- font-size: 12px;
- font-weight: bold;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px; }
- #grid .column:hover,
- #grid .columns:hover {
- background: #bbb;
- color: #333; }
- #grid .example-grid { overflow: hidden; }
-
- .post-button-note,
- .post-button-note a {
- font-size: 11px;
- color: #999; }
-
- #examples .four.columns a {
- text-decoration: none;
- }
- #examples .four.columns a:hover {
- text-decoration: underline;
- }
-
-
- .resize {
- position: fixed;
- bottom: 0;
- right: 0;
- height: 80px;
- width: 80px;
- background: url(images/resize.png); }
-
-
- img {
- max-width: 100%;
- height: auto; }
-
- .gist-meta { display: none !important;}
-
- ul ul ul li { margin-bottom: 3px; }
-
- .twitter-share-button { margin-bottom: -18px; }
-
- /* Table stylesheets */
- table {
- width: 100%;
- border-collapse: collapse;
- }
-
- table th, table td {
- padding: 10px 10px 9px;
- font-size: 13px;
- line-height: 18px;
- text-align: left;
- }
-
- table td {
- vertical-align: top;
- border-top: solid 1px #ddd;
- }
-
- table th {
- padding-top: 9px;
- font-weight: bold;
- vertical-align: middle;
- }
-
- table.condensed th, table.condensed td {
- padding: 5px 5px 4px;
- }
-
- table.bordered {
- border-collapse: separate;
- border: solid 1px #ddd;
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
- }
-
- table.bordered th + th,
- table.bordered th + td,
- table.bordered td + td {
- border-left: solid 1px #ddd;
- }
-
- .zebra-striped tbody tr:nth-child(odd) td,
- .zebra-striped tbody tr:nth-child(odd) th {
- background: #f5f5f5;
- }
-
-.carbonad,
-.carbonad-image,
-.carbonad-text,
-.carbonad-tag {
- background: none !important;
- border: none !important;
- margin-left: 0 !important;
-}
-.carbonad-tag {
- margin-top: 6px !important;
- padding-top: 0 !important;
-}
-.carbonad-text {
- height: auto !important;
-}
-.carbonad-image {
- margin-top: 0 !important;
-}
-
-.hidden-text {
- font-size: 12px;
- color: #999;
-}
-
-td.date, th.date {
- text-align: right;
-}
-
-td.date {
- font-style: italic;
-}
-
-form.note input[type="text"], form.note textarea {
- width: 100%;
-}
-
-form hr {
- width: 218px;
- margin: 10px 0px;
-}
-
-form.note textarea {
- height: 250px;
-}
-
-div.content-area {
- min-height: 600px;
-}
-
-hr.footer {
- margin-bottom: 10px;
-}
-
-div.footer {
- margin-bottom: 10px;
- text-align: center;
- font-size: 12px;
-}
-
-form.sign-in {
- margin: 50px 0 0 0;
-}
-
-.sort_arrow {
- text-decoration: none;
-}
-
-.sort_arrow:hover {
- text-decoration: none;
- color: red;
-}
-
-div.sign-in-out-block {
- position: absolute;
- right: 14px;
- top: 8px;
- font-size: 12px;
-}
-
-div.sign-in-out-block a {
- /*text-decoration: none;*/
-}
-
-a.small-red {
- color: red;
- font-size: 12px;
-}
-
-table.notes {
- margin: 0 0 20px 0;
-}
-
-table.notes th.note {
- width: 72%;
-}
-
-table.notes td.pad {
- color: grey;
-}
-
-table.notes td.pad a {
- color: grey;
- text-decoration: underline;
- font-style: normal;
-}
-
-
-table.notes td.pad a:hover {
- color: black;
-}
-
-p.empty {
- color: grey;
- font-style: italic;
-}
-
-a.delete-note {
- float: right;
- font-size: 12px;
- color: red;
-}
-
-.red, input.red {
- color: red !important;
-}
-
-ul.errorlist, ul.errors {
- margin: -18px 0 0 0;
-}
-
-ul.errorlist li, ul.errors li {
- color: red;
-}
-
-.alert-area {
- text-align: center;
-}
-
-.alert {
- padding: 5px 8px;
- margin: 0 0 12px 0;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
-}
-
-.alert-success {
- color: #468847;
- background-color: #dff0d8;
- border: 1px solid #d6e9c6;
-}
-
-.alert-error {
- color: #b94a48;
- background-color: #f2dede;
- border: 1px solid #eed3d7;
-}
-
- /* Mobile */
- @media only screen and (max-width: 767px) {
- header h1 { font-size: 34px; line-height: 37px; }
- nav { position: relative; }
- nav ul,
- .carbonad {
- display: none;
- }
- #logo { text-align: left; }
- #examples .four.columns {
- padding-top: 30px;
- }
- }
-
- /* Mobile Landscape */
- @media only screen and (min-width: 480px) and (max-width: 767px) {
- nav ul {
- display: none;
- }
- }
-
- /* Non 960 */
- @media only screen and (max-width: 959px) {
- #logo {
- font-size: 21px;
- margin-bottom: 15px; }
- nav .button {
- padding: 9px 20px 11px; }
- }
-
- /* iPad Portrait/Browser */
- @media only screen and (min-width: 768px) and (max-width: 959px) {
- nav {
- width: 124px; }
- }
-
- /* Mobile/Browser */
- @media only screen and (max-width: 767px) {}
-
- /* Mobile Landscape/Browser */
- @media only screen and (min-width: 480px) and (max-width: 767px) {}
-
- /* Anything smaller than standard 960 */
- @media only screen and (max-width: 959px) {}
-
-
- /* iPad Portrait Only */
- @media only screen and (min-width: 768px) and (max-width: 959px) and (max-device-width: 1000px) {}
-
- /* Mobile Only */
- @media only screen and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Mobile Landscape Only */
- @media only screen and (min-width: 480px) and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Anything smaller than standard 960 on a device */
- @media only screen and (max-width: 959px) and (max-device-width: 1000px) {
- .resize { display: none; }
- }
diff --git a/django/notejam/templates/404.html b/django/notejam/templates/404.html
deleted file mode 100644
index e69de29bb..000000000
diff --git a/django/notejam/templates/base.html b/django/notejam/templates/base.html
deleted file mode 100644
index 5b84e65d2..000000000
--- a/django/notejam/templates/base.html
+++ /dev/null
@@ -1,92 +0,0 @@
-{% load pad_tags %}
-
-
-
-
-
-
-
-
-
- {% block title %}Notejam{% endblock %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {% block extrahead %}{% endblock %}
-
-
-
-
-
-
-
- {% block pads %}
-
-
My pads
-
-
- {% get_pads as my_pads %}
- {% if my_pads.count > 0 %}
-
- {% else %}
- No pads
- {% endif %}
-
- New pad
-
-
-
- {% endblock %}
-
- {% if messages %}
-
- {% for message in messages %}
-
{{ message }}
- {% endfor %}
-
- {% endif %}
- {% block content %}
- {% endblock %}
-
-
-
-
-
-
-
diff --git a/django/notejam/templates/user.html b/django/notejam/templates/user.html
deleted file mode 100644
index 39a93a045..000000000
--- a/django/notejam/templates/user.html
+++ /dev/null
@@ -1,5 +0,0 @@
-{% extends "base.html" %}
-
-{% block pads %}{% endblock %}
-
-{% block content_class %}sixteen columns content-area{% endblock %}
diff --git a/django/notejam/users/__init__.py b/django/notejam/users/__init__.py
deleted file mode 100644
index e69de29bb..000000000
diff --git a/django/notejam/users/auth_backends.py b/django/notejam/users/auth_backends.py
deleted file mode 100644
index ada5ecd92..000000000
--- a/django/notejam/users/auth_backends.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from django.contrib.auth.models import User
-
-
-class EmailModelBackend(object):
- ''' Custom backend to be able to use email for authentication '''
- def authenticate(self, email=None, password=None):
- try:
- user = User.objects.get(email=email)
- if user.check_password(password):
- return user
- except User.DoesNotExist:
- return None
-
- def get_user(self, user_id):
- try:
- return User.objects.get(pk=user_id)
- except User.DoesNotExist:
- return None
diff --git a/django/notejam/users/forms.py b/django/notejam/users/forms.py
deleted file mode 100644
index 0079708fb..000000000
--- a/django/notejam/users/forms.py
+++ /dev/null
@@ -1,56 +0,0 @@
-from django import forms
-from django.contrib.auth.models import User
-
-
-class SignupForm(forms.ModelForm):
- email = forms.EmailField()
- password = forms.CharField(widget=forms.PasswordInput())
- repeat_password = forms.CharField(widget=forms.PasswordInput())
-
- class Meta:
- model = User
- fields = ('email',)
-
- def save(self, force_insert=False, force_update=False, commit=True):
- user = super(SignupForm, self).save(commit=False)
- # username hack (we don't need username, but django requires it ?)
- user.username = user.email
-
- user.set_password(self.cleaned_data['password'])
- if commit:
- user.save()
- return user
-
- def clean_email(self):
- email = self.cleaned_data.get('email')
-
- if User.objects.filter(email=email).count():
- raise forms.ValidationError(
- 'User with this email is already signed up'
- )
-
- return email
-
- def clean_repeat_password(self):
- password = self.cleaned_data.get('password')
- repeat_password = self.cleaned_data.get('repeat_password')
-
- if password != repeat_password:
- raise forms.ValidationError("Your passwords do not match")
-
-
-class SigninForm(forms.Form):
- email = forms.EmailField()
- password = forms.CharField(widget=forms.PasswordInput())
-
-
-class ForgotPasswordForm(forms.Form):
- email = forms.EmailField()
-
- def clean_email(self):
- email = self.cleaned_data.get('email')
- try:
- User.objects.get(email=email)
- return email
- except User.DoesNotExist:
- raise forms.ValidationError("No user with given email")
diff --git a/django/notejam/users/models.py b/django/notejam/users/models.py
deleted file mode 100644
index 71a836239..000000000
--- a/django/notejam/users/models.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.db import models
-
-# Create your models here.
diff --git a/django/notejam/users/templates/forgot_password.html b/django/notejam/users/templates/forgot_password.html
deleted file mode 100644
index 8851e0f07..000000000
--- a/django/notejam/users/templates/forgot_password.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{% extends "user.html" %}
-
-{% block title %}Forgot password?{% endblock %}
-{% block page_title %}Forgot password? {% endblock %}
-
-{% block content %}
-
-{% endblock %}
-
diff --git a/django/notejam/users/templates/settings.html b/django/notejam/users/templates/settings.html
deleted file mode 100644
index 699e780ee..000000000
--- a/django/notejam/users/templates/settings.html
+++ /dev/null
@@ -1,20 +0,0 @@
-{% extends "user.html" %}
-
-{% block title %}Account Settings{% endblock %}
-{% block page_title %}Account Settings {% endblock %}
-
-{% block content %}
-
-{% endblock %}
diff --git a/django/notejam/users/templates/signin.html b/django/notejam/users/templates/signin.html
deleted file mode 100644
index faee87030..000000000
--- a/django/notejam/users/templates/signin.html
+++ /dev/null
@@ -1,19 +0,0 @@
-{% extends "user.html" %}
-
-{% block title %}Sign In{% endblock %}
-{% block page_title %}Sign In {% endblock %}
-
-{% block content %}
-
-{% endblock %}
diff --git a/django/notejam/users/templates/signup.html b/django/notejam/users/templates/signup.html
deleted file mode 100644
index ba717ced7..000000000
--- a/django/notejam/users/templates/signup.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{% extends "user.html" %}
-
-{% block title %}Sign Up{% endblock %}
-{% block page_title %}Sign Up {% endblock %}
-
-{% block content %}
-
-{% endblock %}
-
diff --git a/django/notejam/users/tests.py b/django/notejam/users/tests.py
deleted file mode 100644
index 5923a6a83..000000000
--- a/django/notejam/users/tests.py
+++ /dev/null
@@ -1,83 +0,0 @@
-from django.contrib.auth.models import User
-from django.core.urlresolvers import reverse
-from django.test import TestCase
-
-
-class SignUpTest(TestCase):
- def _get_user_data(self, **kwargs):
- user_data = {
- 'email': 'email@example.com',
- 'password': 'secure_password',
- 'repeat_password': 'secure_password'
- }
- user_data.update(**kwargs)
- return user_data
-
- def test_signup_success(self):
- response = self.client.post(
- reverse('signup'), self._get_user_data())
- self.assertRedirects(response, reverse('signin'))
- self.assertEqual(1, User.objects.all().count())
-
- def test_signup_fail_required_fields(self):
- response = self.client.post(reverse('signup'), {})
- self.assertEqual(
- response.context['form'].errors.keys(),
- self._get_user_data().keys()
- )
-
- def test_signup_fail_invalid_email(self):
- invalid_data = self._get_user_data(email='invalid email')
- response = self.client.post(reverse('signup'), invalid_data)
- self.assertIn('email', response.context['form'].errors)
-
- def test_signup_fail_passwords_dont_match(self):
- invalid_data = self._get_user_data(password='another pass')
- response = self.client.post(reverse('signup'), invalid_data)
- self.assertIn('repeat_password', response.context['form'].errors)
-
- def test_signup_fail_email_exists(self):
- data = self._get_user_data()
- User.objects.create(
- email=data['email'],
- username=data['email'],
- password=data['password']
- )
-
- response = self.client.post(reverse('signup'), data)
- self.assertIn('email', response.context['form'].errors)
-
-
-class SignInTest(TestCase):
- def _get_user_data(self, **kwargs):
- user_data = {
- 'email': 'email@example.com',
- 'password': 'secure_password'
- }
- user_data.update(**kwargs)
- return user_data
-
- def test_signin_success(self):
- data = self._get_user_data()
- user = User.objects.create(email=data['email'], username=data['email'])
- user.set_password(data['password'])
- user.save()
-
- response = self.client.post(reverse('signin'), data)
- self.assertRedirects(response, reverse('home'))
-
- def test_signin_fail(self):
- response = self.client.post(reverse('signin'), self._get_user_data())
- self.assertContains(response, 'Wrong email or password')
-
- def test_signin_fail_required_fields(self):
- response = self.client.post(reverse('signin'), {})
- self.assertEqual(
- response.context['form'].errors.keys(),
- self._get_user_data().keys()
- )
-
- def test_signin_fail_invalid_email(self):
- invalid_data = self._get_user_data(email='invalid email')
- response = self.client.post(reverse('signin'), invalid_data)
- self.assertIn('email', response.context['form'].errors)
diff --git a/django/notejam/users/views.py b/django/notejam/users/views.py
deleted file mode 100644
index 51ac56d38..000000000
--- a/django/notejam/users/views.py
+++ /dev/null
@@ -1,106 +0,0 @@
-import hashlib
-from datetime import datetime
-
-from django.conf import settings
-from django.contrib import messages
-from django.contrib.auth import authenticate, login
-from django.contrib.auth.forms import PasswordChangeForm
-from django.contrib.auth.models import User
-from django.core.mail import send_mail
-from django.core.urlresolvers import reverse_lazy
-from django.shortcuts import redirect
-from django.views.generic.edit import FormView
-from django.views.generic.edit import CreateView
-
-from users.forms import SignupForm, SigninForm, ForgotPasswordForm
-
-
-class SignupView(CreateView):
- model = User
- form_class = SignupForm
- template_name = "signup.html"
- success_url = reverse_lazy('signin')
- success_message = "Account is created. Now you can sign in."
-
- def form_valid(self, form):
- messages.success(self.request, self.success_message)
- return super(SignupView, self).form_valid(form)
-
-
-class SigninView(FormView):
- template_name = "signin.html"
- form_class = SigninForm
- success_url = reverse_lazy('home')
- error_message = "Wrong email or password"
-
- def post(self, request, *args, **kwargs):
- form_class = self.get_form_class()
- form = self.get_form(form_class)
- if form.is_valid():
- user = authenticate(
- email=form.cleaned_data['email'],
- password=form.cleaned_data['password']
- )
- if user is not None:
- login(request, user)
- return redirect(reverse_lazy('home'))
- else:
- messages.error(request, self.error_message)
-
- return self.render_to_response(
- self.get_context_data(form=form)
- )
- else:
- return self.form_invalid(form, **kwargs)
-
-
-class ForgotPasswordView(FormView):
- form_class = ForgotPasswordForm
- template_name = 'forgot_password.html'
- success_url = reverse_lazy('signin')
- success_message = 'New password is sent in your email inbox'
-
- def form_valid(self, form):
- m = hashlib.md5()
- m.update(
- "{email}{secret}{date}".format(
- email=form.cleaned_data['email'],
- secret=settings.SECRET_KEY,
- date=str(datetime.today())
- )
- )
- new_password = m.hexdigest()[:8]
-
- user = User.objects.get(email=form.cleaned_data['email'])
- user.set_password(new_password)
- user.save()
-
- send_mail(
- 'Notejam password reset',
- 'Hi, {}. Your new password is {}.'.format(
- form.cleaned_data['email'],
- new_password
- ),
- 'from@notejamapp.com',
- [form.cleaned_data['email']],
- fail_silently=False
- )
- messages.success(self.request, self.success_message)
-
- return super(ForgotPasswordView, self).form_valid(form)
-
-
-class AccountSettingsView(FormView):
- form_class = PasswordChangeForm
- template_name = 'settings.html'
- success_url = reverse_lazy('home')
- success_message = 'Password is successfully changed'
-
- def get_form_kwargs(self):
- kwargs = super(AccountSettingsView, self).get_form_kwargs()
- kwargs['user'] = self.request.user
- return kwargs
-
- def form_valid(self, form):
- messages.success(self.request, self.success_message)
- return super(AccountSettingsView, self).form_valid(form)
diff --git a/django/requirements.txt b/django/requirements.txt
deleted file mode 100644
index 4c05c817f..000000000
--- a/django/requirements.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Django==1.6.5
-South==1.0
diff --git a/express/README.rst b/express/README.rst
deleted file mode 100644
index a851fa182..000000000
--- a/express/README.rst
+++ /dev/null
@@ -1,83 +0,0 @@
-****************
-Notejam: Express
-****************
-
-Notejam application implemented using `Express.js `_ microframework.
-
-Express version: 4.2
-
-Middlewares/extentions used:
-
-* `Passport.js `_ for authentication
-* `Node ORM 2 `_ for database
-* `Mocha `_ and `Superagent `_ for testing
-* ... and `others `_
-
-==========================
-Installation and launching
-==========================
-
--------
-Cloning
--------
-
-Clone the repo:
-
-.. code-block:: bash
-
- $ git clone git@github.com:komarserjio/notejam.git YOUR_PROJECT_DIR/
-
--------------------
-Install environment
--------------------
-Use `npm `_ to manage dependencies.
-
-Install dependencies
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/express/notejam/
- $ npm install
-
-Create database schema
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/express/notejam/
- $ node db.js
-
-------
-Launch
-------
-
-Start built-in web server:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/express/notejam/
- $ DEBUG=* ./bin/www
-
-Go to http://127.0.0.1:3000/ in your browser
-
-------------------
-Running unit tests
-------------------
-
-Run unit tests:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/express/notejam/
- $ ./node_modules/mocha/bin/mocha tests
-
-============
-Contribution
-============
-
-Please send your pull requests in the ``master`` branch.
-
-Always prepend your commits with a framework name:
-
-.. code-block:: bash
-
- Express: Implemented sign in functionality
diff --git a/express/notejam/app.js b/express/notejam/app.js
deleted file mode 100644
index f78635800..000000000
--- a/express/notejam/app.js
+++ /dev/null
@@ -1,110 +0,0 @@
-var express = require('express');
-var session = require('express-session');
-var path = require('path');
-var favicon = require('static-favicon');
-var logger = require('morgan');
-var cookieParser = require('cookie-parser');
-var flash = require('connect-flash');
-var bodyParser = require('body-parser');
-var orm = require('orm');
-var expressValidator = require('express-validator');
-var passport = require('passport');
-var LocalStrategy = require('passport-local').Strategy;
-
-var users = require('./routes/users');
-var pads = require('./routes/pads');
-var notes = require('./routes/notes');
-var settings = require('./settings')
-
-var app = express();
-
-
-// view engine setup
-app.set('views', path.join(__dirname, 'views'));
-app.set('view engine', 'jade');
-
-app.use(favicon());
-app.use(logger('dev'));
-app.use(bodyParser.json());
-app.use(bodyParser.urlencoded());
-app.use(expressValidator());
-app.use(cookieParser());
-app.use(session({cookie: { maxAge: 60000 }, secret: 'secret'}));
-app.use(flash());
-app.use(passport.initialize());
-app.use(passport.session());
-app.use(express.static(path.join(__dirname, 'public')));
-
-// DB configuration
-var sqlite3 = require('sqlite3').verbose();
-var db = new sqlite3.Database(settings.db);
-
-orm.settings.set("instance.returnAllErrors", true);
-app.use(orm.express(settings.dsn, {
- define: function (db, models, next) {
- db.load("./models", function (err) {
- models.User = db.models.users;
- models.Pad = db.models.pads;
- models.Note = db.models.notes;
- next();
- });
- }
-}));
-
-// Flash Messages configuration
-app.use(function(req, res, next){
- res.locals.flash_messages = {
- 'success': req.flash('success'),
- 'error': req.flash('error')
- }
- next();
-});
-
-// Inject request object and user pads in view scope
-app.use(function(req, res, next){
- res.locals.req = req;
-
- if (req.isAuthenticated()) {
- req.user.getPads(function(i, pads) {
- res.locals.pads = pads;
- next();
- });
- } else {
- next();
- }
-});
-
-app.use('/', users);
-app.use('/', pads);
-app.use('/', notes);
-
-/// catch 404 and forward to error handler
-app.use(function(req, res, next) {
- var err = new Error('Not Found');
- err.status = 404;
- next(err);
-});
-
-// development error handler
-// will print stacktrace
-if (app.get('env') === 'development') {
- app.use(function(err, req, res, next) {
- res.status(err.status || 500);
- res.render('error', {
- message: err.message,
- error: err
- });
- });
-}
-
-// production error handler
-// no stacktraces leaked to user
-app.use(function(err, req, res, next) {
- res.status(err.status || 500);
- res.render('error', {
- message: err.message,
- error: {}
- });
-});
-
-module.exports = app;
diff --git a/express/notejam/bin/www b/express/notejam/bin/www
deleted file mode 100755
index 5e193192b..000000000
--- a/express/notejam/bin/www
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env node
-var debug = require('debug')('notejam');
-var app = require('../app');
-
-app.set('port', process.env.PORT || 3000);
-
-var server = app.listen(app.get('port'), function() {
- debug('Express server listening on port ' + server.address().port);
-});
diff --git a/express/notejam/db.js b/express/notejam/db.js
deleted file mode 100644
index d0d4a0dec..000000000
--- a/express/notejam/db.js
+++ /dev/null
@@ -1,105 +0,0 @@
-var sqlite3 = require('sqlite3').verbose();
-var async = require('async');
-
-var settings = require('./settings');
-var db = new sqlite3.Database(settings.db);
-
-var functions = {
- createTables: function(next) {
- async.series({
- createUsers: function(callback) {
- db.run("CREATE TABLE IF NOT EXISTS users (" +
- "id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +
- "email VARCHAR(75) NOT NULL," +
- "password VARCHAR(128) NOT NULL);", [],
- function() { callback(null); });
- },
- createPads: function(callback) {
- db.run("CREATE TABLE IF NOT EXISTS pads (" +
- "id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +
- "name VARCHAR(100) NOT NULL," +
- "user_id INTEGER NOT NULL REFERENCES users(id));", [],
- function() { callback(null); })
- },
- createNotes: function(callback) {
- db.run("CREATE TABLE IF NOT EXISTS notes (" +
- "id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +
- "pad_id INTEGER REFERENCES pads(id)," +
- "user_id INTEGER NOT NULL REFERENCES users(id)," +
- "name VARCHAR(100) NOT NULL," +
- "text text NOT NULL," +
- "created_at default current_timestamp," +
- "updated_at default current_timestamp);", [],
- function() { callback(null); });
- }
- },
- function(err, results) {
- next();
- });
- },
-
- applyFixtures: function(next) {
- this.truncateTables(function() {
- async.series([
- function(callback) {
- db.run("INSERT INTO users VALUES (1, 'user1@example.com', " +
- "'$2a$10$mhkqpUvPPs.zoRSTiGAEKODOJMljkOY96zludIIw.Pop1UvQCTx8u')", [],
- function() { callback(null) });
- },
- function(callback) {
- db.run("INSERT INTO users VALUES (2, 'user2@example.com', " +
- "'$2a$10$mhkqpUvPPs.zoRSTiGAEKODOJMljkOY96zludIIw.Pop1UvQCTx8u')", [],
- function() { callback(null) });
-
- },
- function(callback) {
- db.run("INSERT INTO pads VALUES (1, 'Pad 1', 1)", [],
- function() { callback(null) });
- },
- function(callback) {
- db.run("INSERT INTO pads VALUES (2, 'Pad 2', 1)", [],
- function() { callback(null) });
- },
- function(callback) {
- db.run("INSERT INTO notes VALUES (1, 1, 1, 'Note 1', 'Text', 1, 1)", [],
- function() { callback(null) });
- },
- function(callback) {
- db.run("INSERT INTO notes VALUES (2, 1, 1, 'Note 2', 'Text', 1, 1)", [],
- function() { callback(null) });
- }
- ], function(err, results) {
- next();
- })
- });
- },
-
- truncateTables: function(next) {
- async.series([
- function(callback) {
- db.run("DELETE FROM users;", [],
- function() { callback(null) });
- },
- function(callback) {
- db.run("DELETE FROM notes;", [],
- function() { callback(null) });
-
- },
- function(callback) {
- db.run("DELETE FROM pads;", [],
- function(result) { callback(null); });
- }
- ], function(err, results) {
- next();
- })
- }
-}
-
-
-if (require.main === module) {
- functions.createTables(function() {
- console.log("DB successfully initialized");
- });
-}
-
-module.exports = functions;
diff --git a/express/notejam/helpers.js b/express/notejam/helpers.js
deleted file mode 100644
index 21fe0a575..000000000
--- a/express/notejam/helpers.js
+++ /dev/null
@@ -1,22 +0,0 @@
-module.exports = {
- formatFormErrors: function(errors) {
- formatted = {};
- errors.forEach(function(e) {
- formatted[e.param] = e.msg;
- });
- return formatted;
- },
-
- formatModelErrors: function(errors) {
- formatted = {};
- errors.forEach(function(e) {
- formatted[e.property] = e.msg;
- });
- return formatted;
- },
-
- loginRequired: function (req, res, next) {
- if (req.isAuthenticated()) { return next(); }
- res.redirect('/signin')
- }
-}
diff --git a/express/notejam/models.js b/express/notejam/models.js
deleted file mode 100644
index aa5b3ab11..000000000
--- a/express/notejam/models.js
+++ /dev/null
@@ -1,49 +0,0 @@
-var orm = require('orm');
-var moment = require('moment');
-
-module.exports = function (db, cb) {
- var User = db.define("users", {
- id : { type: "serial", key: true },
- email : { type: "text" },
- password: { type: "text" }
- }, {
- validations: {
- email: [orm.enforce.unique("User with given email already exists!"),
- orm.enforce.patterns.email("Invalid email")],
- password: orm.enforce.notEmptyString("Password is required"),
- // @TODO add "match passwords" validation
- }
- });
-
- var Pad = db.define("pads", {
- id : { type: "serial", key: true },
- name : { type: "text" },
- }, {
- validations: {
- name: orm.enforce.notEmptyString("Name is required"),
- }
- });
- Pad.hasOne("user", User, { required: true, reverse: 'pads' });
-
- var Note = db.define("notes", {
- id : { type: "serial", key: true },
- name : { type: "text" },
- text : { type: "text" },
- created_at : { type: "date", time: true },
- updated_at : { type: "date", time: true }
- }, {
- methods: {
- updatedAt: function () {
- return moment(this.updated_at).fromNow();
- }
- },
- validations: {
- name: orm.enforce.notEmptyString("Name is required"),
- text: orm.enforce.notEmptyString("Text is required"),
- }
- });
- Note.hasOne("user", User, { required: true, reverse: 'notes' });
- Note.hasOne("pad", Pad, { required: false, reverse: 'notes' });
-
- return cb();
-};
diff --git a/express/notejam/package.json b/express/notejam/package.json
deleted file mode 100644
index cd4cb3a00..000000000
--- a/express/notejam/package.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "name": "notejam",
- "version": "0.0.1",
- "private": true,
- "scripts": {
- "start": "node ./bin/www"
- },
- "dependencies": {
- "express": "~4.2.0",
- "sqlite3": "*",
- "static-favicon": "~1.0.0",
- "morgan": "~1.0.0",
- "cookie-parser": "~1.0.1",
- "body-parser": "~1.0.0",
- "debug": "~0.7.4",
- "jade": "~1.3.0",
- "orm": "~2.1.19",
- "connect-flash": "~0.1.1",
- "express-session": "~1.0.2",
- "express-validator": "~2.6.0",
- "passport": "0.2.1",
- "passport-local": "1.0.0",
- "mocha": "1.*.*",
- "supertest": "0.*.*",
- "superagent": "*",
- "should": "*",
- "should-http": "*",
- "async": "*",
- "moment": "*",
- "bcrypt": "*",
- "nodemailer": "*",
- "nodemailer-stub-transport": "*"
- }
-}
diff --git a/express/notejam/public/stylesheets/style.css b/express/notejam/public/stylesheets/style.css
deleted file mode 100644
index f2cf7f5de..000000000
--- a/express/notejam/public/stylesheets/style.css
+++ /dev/null
@@ -1,397 +0,0 @@
-/*
-* Skeleton V1.0.3
-* Copyright 2011, Dave Gamache
-* www.getskeleton.com
-* Free to use under the MIT license.
-* http://www.opensource.org/licenses/mit-license.php
-* 7/17/2011
-*/
-
-
-/* Documentation Styles
-================================================== */
- div.container {
- padding-top: 40px; }
-
- /* Doc nav */
- nav {
- width: 160px; }
- #logo, .bold-header {
- margin-bottom: 30px;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- letter-spacing: -1px;
- color: #555;
- font-weight: bold; }
- .bold-header span {
- font-weight: normal;
- font-size: 23px;
- }
- .bold-header a.header {
- text-decoration: none;
- color: inherit;
- }
- .bold-header span.jam {
- font-size: 46px;
- line-height: 50px;
- }
- nav ul {
- float: left; }
- nav ul li {
- display: block;
- margin-bottom: 10px; }
- nav ul li a,
- nav ul li a:visited,
- nav ul li a:active {
- font-size: 14px;
- color: #555;
- text-decoration: none;
- font-weight: bold; }
- nav ul li a:hover,
- nav ul li a:focus {
- color: #222; }
- header h1 {
- font-size: 52px;
- line-height: 61px;
- letter-spacing: -1px;
- font-weight: normal;
- font-family: "Georgia", "Times New Roman", Helvetica, Arial, sans-serif; }
- hr.large {
- border: none;
- height: 8px;
- background: #ebebeb;
- margin: 50px 0; }
- div.doc-section {
- margin: 30px 0; }
-
- #whatAndWhy .row {
- padding: 30px 0 0; }
-
- #typography blockquote {
- margin-top: 20px; }
-
- .hidden-code a {
- font-size: 12px;
- color: #999; }
- .hidden-code>div {
- display: none; }
-
-
- /* Grid */
- #grid .column,
- #grid .columns {
- background: #ddd;
- height: 25px;
- line-height: 25px;
- margin-bottom: 10px;
- text-align: center;
- text-transform: uppercase;
- color: #555;
- font-size: 12px;
- font-weight: bold;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px; }
- #grid .column:hover,
- #grid .columns:hover {
- background: #bbb;
- color: #333; }
- #grid .example-grid { overflow: hidden; }
-
- .post-button-note,
- .post-button-note a {
- font-size: 11px;
- color: #999; }
-
- #examples .four.columns a {
- text-decoration: none;
- }
- #examples .four.columns a:hover {
- text-decoration: underline;
- }
-
-
- .resize {
- position: fixed;
- bottom: 0;
- right: 0;
- height: 80px;
- width: 80px;
- background: url(images/resize.png); }
-
-
- img {
- max-width: 100%;
- height: auto; }
-
- .gist-meta { display: none !important;}
-
- ul ul ul li { margin-bottom: 3px; }
-
- .twitter-share-button { margin-bottom: -18px; }
-
- /* Table stylesheets */
- table {
- width: 100%;
- border-collapse: collapse;
- }
-
- table th, table td {
- padding: 10px 10px 9px;
- font-size: 13px;
- line-height: 18px;
- text-align: left;
- }
-
- table td {
- vertical-align: top;
- border-top: solid 1px #ddd;
- }
-
- table th {
- padding-top: 9px;
- font-weight: bold;
- vertical-align: middle;
- }
-
- table.condensed th, table.condensed td {
- padding: 5px 5px 4px;
- }
-
- table.bordered {
- border-collapse: separate;
- border: solid 1px #ddd;
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
- }
-
- table.bordered th + th,
- table.bordered th + td,
- table.bordered td + td {
- border-left: solid 1px #ddd;
- }
-
- .zebra-striped tbody tr:nth-child(odd) td,
- .zebra-striped tbody tr:nth-child(odd) th {
- background: #f5f5f5;
- }
-
-.carbonad,
-.carbonad-image,
-.carbonad-text,
-.carbonad-tag {
- background: none !important;
- border: none !important;
- margin-left: 0 !important;
-}
-.carbonad-tag {
- margin-top: 6px !important;
- padding-top: 0 !important;
-}
-.carbonad-text {
- height: auto !important;
-}
-.carbonad-image {
- margin-top: 0 !important;
-}
-
-.hidden-text {
- font-size: 12px;
- color: #999;
-}
-
-td.date, th.date {
- text-align: right;
-}
-
-td.date {
- font-style: italic;
-}
-
-form.note input[type="text"], form.note textarea {
- width: 100%;
-}
-
-form hr {
- width: 218px;
- margin: 10px 0px;
-}
-
-form.note textarea {
- height: 250px;
-}
-
-div.content-area {
- min-height: 600px;
-}
-
-hr.footer {
- margin-bottom: 10px;
-}
-
-div.footer {
- margin-bottom: 10px;
- text-align: center;
- font-size: 12px;
-}
-
-form.sign-in {
- margin: 50px 0 0 0;
-}
-
-.sort_arrow {
- text-decoration: none;
-}
-
-.sort_arrow:hover {
- text-decoration: none;
- color: red;
-}
-
-div.sign-in-out-block {
- position: absolute;
- right: 14px;
- top: 8px;
- font-size: 12px;
-}
-
-div.sign-in-out-block a {
- /*text-decoration: none;*/
-}
-
-a.small-red {
- color: red;
- font-size: 12px;
-}
-
-table.notes {
- margin: 0 0 20px 0;
-}
-
-table.notes th.note {
- width: 72%;
-}
-
-table.notes td.pad {
- color: grey;
-}
-
-table.notes td.pad a {
- color: grey;
- text-decoration: underline;
- font-style: normal;
-}
-
-
-table.notes td.pad a:hover {
- color: black;
-}
-
-p.empty {
- color: grey;
- font-style: italic;
-}
-
-a.delete-note {
- float: right;
- font-size: 12px;
- color: red;
-}
-
-.red, input.red {
- color: red !important;
-}
-
-ul.errorlist, ul.errors {
- margin: -18px 0 0 0;
-}
-
-ul.errorlist li, ul.errors li {
- color: red;
-}
-
-.alert-area {
- text-align: center;
-}
-
-.alert {
- padding: 5px 8px;
- margin: 0 0 12px 0;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
-}
-
-.alert-success {
- color: #468847;
- background-color: #dff0d8;
- border: 1px solid #d6e9c6;
-}
-
-.alert-error {
- color: #b94a48;
- background-color: #f2dede;
- border: 1px solid #eed3d7;
-}
-
- /* Mobile */
- @media only screen and (max-width: 767px) {
- header h1 { font-size: 34px; line-height: 37px; }
- nav { position: relative; }
- nav ul,
- .carbonad {
- display: none;
- }
- #logo { text-align: left; }
- #examples .four.columns {
- padding-top: 30px;
- }
- }
-
- /* Mobile Landscape */
- @media only screen and (min-width: 480px) and (max-width: 767px) {
- nav ul {
- display: none;
- }
- }
-
- /* Non 960 */
- @media only screen and (max-width: 959px) {
- #logo {
- font-size: 21px;
- margin-bottom: 15px; }
- nav .button {
- padding: 9px 20px 11px; }
- }
-
- /* iPad Portrait/Browser */
- @media only screen and (min-width: 768px) and (max-width: 959px) {
- nav {
- width: 124px; }
- }
-
- /* Mobile/Browser */
- @media only screen and (max-width: 767px) {}
-
- /* Mobile Landscape/Browser */
- @media only screen and (min-width: 480px) and (max-width: 767px) {}
-
- /* Anything smaller than standard 960 */
- @media only screen and (max-width: 959px) {}
-
-
- /* iPad Portrait Only */
- @media only screen and (min-width: 768px) and (max-width: 959px) and (max-device-width: 1000px) {}
-
- /* Mobile Only */
- @media only screen and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Mobile Landscape Only */
- @media only screen and (min-width: 480px) and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Anything smaller than standard 960 on a device */
- @media only screen and (max-width: 959px) and (max-device-width: 1000px) {
- .resize { display: none; }
- }
-
-
diff --git a/express/notejam/routes/notes.js b/express/notejam/routes/notes.js
deleted file mode 100644
index 339e21228..000000000
--- a/express/notejam/routes/notes.js
+++ /dev/null
@@ -1,108 +0,0 @@
-var express = require('express');
-var router = express.Router();
-var orm = require('orm');
-var async = require('async');
-
-var helpers = require('../helpers');
-
-// All notes (main page)
-router.get('/', helpers.loginRequired, function(req, res) {
- req.user.getNotes(req.param("order", "-updated_at"), function(i, notes) {
- async.map(notes, function(item, cb) {
- item.getPad(function(err, pad) {
- item.pad = pad;
- return cb(null, item);
- })
- }, function(err, results) {
- res.render(
- 'notes/list',
- {title: 'All notes (' + results.length + ')', notes: results}
- );
- });
- })
-});
-
-// Create new note
-router.get('/notes/create', helpers.loginRequired, function(req, res) {
- res.render('notes/create', {padId: req.param('pad')});
-});
-
-router.post('/notes/create', helpers.loginRequired, function(req, res) {
- var data = req.body;
- data['user_id'] = req.user.id;
- req.models.Note.create(data, function(err, message) {
- if (err) {
- res.locals.errors = helpers.formatModelErrors(err);
- } else {
- req.flash(
- 'success',
- 'Note is successfully created'
- );
- return res.redirect('/');
- }
- res.render('notes/create');
- });
-});
-
-// Inject note in request
-router.use('/notes/:id', function(req, res, next) {
- if (req.user) {
- req.models.Note.one(
- {id: req.param('id'), user_id: req.user.id},
- function(err, note) {
- if (note == null) {
- res.send(404);
- return;
- };
- req.note = note;
- next();
- });
- } else {
- next();
- }
-});
-
-
-// View note
-router.get('/notes/:id', helpers.loginRequired, function(req, res) {
- res.render('notes/view', {note: req.note});
-});
-
-
-
-// Edit note
-router.get('/notes/:id/edit', helpers.loginRequired, function(req, res) {
- res.render('notes/edit', {note: req.note});
-});
-
-router.post('/notes/:id/edit', helpers.loginRequired, function(req, res) {
- req.note.save(req.body, function(err) {
- if (err) {
- res.locals.errors = helpers.formatModelErrors(err);
- res.render('notes/edit', {note: req.note});
- } else {
- req.flash(
- 'success',
- 'Note is successfully updated'
- );
- res.redirect('/notes/' + req.note.id);
- }
- });
-});
-
-// Delete note
-router.get('/notes/:id/delete', helpers.loginRequired, function(req, res) {
- res.render('notes/delete', {note: req.note});
-});
-
-router.post('/notes/:id/delete', helpers.loginRequired, function(req, res) {
- req.note.remove(function(err) {
- req.flash(
- 'success',
- 'Note is successfully deleted'
- );
- res.redirect('/');
- });
-});
-
-module.exports = router;
diff --git a/express/notejam/routes/pads.js b/express/notejam/routes/pads.js
deleted file mode 100644
index c9d1ceee4..000000000
--- a/express/notejam/routes/pads.js
+++ /dev/null
@@ -1,93 +0,0 @@
-var express = require('express');
-var router = express.Router();
-var orm = require('orm');
-
-var helpers = require('../helpers')
-
-// Create new pad
-router.get('/pads/create', helpers.loginRequired, function(req, res) {
- res.render('pads/create');
-});
-
-router.post('/pads/create', helpers.loginRequired, function(req, res) {
- var data = req.body;
- data['user_id'] = req.user.id;
- req.models.Pad.create(data, function(err, message) {
- if (err) {
- res.locals.errors = helpers.formatModelErrors(err);
- } else {
- req.flash(
- 'success',
- 'Pad is successfully created'
- );
- return res.redirect('/');
- }
- res.render('pads/create');
- });
-});
-
-// Inject pad in request
-router.use('/pads/:id', function(req, res, next) {
- if (req.user) {
- req.models.Pad.one(
- {id: req.param('id'), user_id: req.user.id},
- function(err, pad) {
- if (pad == null) {
- res.send(404);
- return;
- };
- req.pad = pad;
- next();
- });
- } else {
- next();
- }
-});
-
-// Pad notes
-router.get('/pads/:id', helpers.loginRequired, function(req, res) {
- req.pad.getNotes(req.param("order", "-updated_at"), function(i, notes) {
- res.render(
- 'pads/list',
- {title: req.pad.name + ' (' + notes.length + ')',
- pad: req.pad, notes: notes}
- );
- });
-});
-
-// Edit pad
-router.get('/pads/:id/edit', helpers.loginRequired, function(req, res) {
- res.render('pads/edit', {pad: req.pad});
-});
-
-router.post('/pads/:id/edit', helpers.loginRequired, function(req, res) {
- req.pad.save({name: req.param('name')}, function(err) {
- if (err) {
- res.locals.errors = helpers.formatModelErrors(err);
- res.render('pads/edit', {pad: req.pad});
- } else {
- req.flash(
- 'success',
- 'Pad is successfully updated'
- );
- res.redirect('/');
- }
- });
-});
-
-// Delete pad
-router.get('/pads/:id/delete', helpers.loginRequired, function(req, res) {
- res.render('pads/delete', {pad: req.pad});
-});
-
-router.post('/pads/:id/delete', helpers.loginRequired, function(req, res) {
- req.pad.remove(function(err) {
- req.flash(
- 'success',
- 'Pad is successfully deleted'
- );
- res.redirect('/');
- });
-});
-
-module.exports = router;
diff --git a/express/notejam/routes/users.js b/express/notejam/routes/users.js
deleted file mode 100644
index e1e72dc06..000000000
--- a/express/notejam/routes/users.js
+++ /dev/null
@@ -1,230 +0,0 @@
-var express = require('express');
-var router = express.Router();
-var debug = require('debug')('http')
-var orm = require('orm');
-var passport = require('passport');
-var LocalStrategy = require('passport-local').Strategy;
-var bcrypt = require('bcrypt');
-var nodemailer = require('nodemailer');
-var stubTransport = require('nodemailer-stub-transport');
-
-var helpers = require('../helpers')
-var settings = require('../settings');
-
-// Sign Up
-router.get('/signup', function(req, res) {
- res.render('users/signup');
-});
-
-router.post('/signup', function(req, res) {
- var data = req.body;
- if (data['password']) {
- data['password'] = generateHash(data['password']);
- };
- req.models.User.create(data, function(err, message) {
- if (err) {
- res.locals.errors = helpers.formatModelErrors(err);
- } else {
- req.flash(
- 'success',
- 'User is successfully created. Now you can sign in.'
- );
- return res.redirect('/signin');
- }
- res.render('users/signup');
- });
-});
-
-// Sign In
-router.get('/signin', function(req, res) {
- res.render('users/signin');
-});
-
-router.post('/signin', function(req, res, next) {
- req.checkBody('email', 'Email is required').notEmpty();
- req.checkBody('password', 'Password is required').notEmpty();
- if (req.validationErrors()) {
- var errors = helpers.formatFormErrors(req.validationErrors());
- }
-
- if (!errors) {
- passport.authenticate('local', function(err, user, info) {
- if (err) { return next(err) }
- if (!user) {
- req.flash('error', info.message);
- return res.redirect('/signin')
- }
- req.logIn(user, function(err) {
- if (err) { return next(err); }
- return res.redirect('/');
- });
- })(req, res, next);
- } else {
- res.locals.errors = errors;
- res.render('users/signin');
- }
-});
-
-// Account settings
-router.get('/settings', helpers.loginRequired, function(req, res) {
- res.render('users/settings');
-});
-
-router.post('/settings', function(req, res, next) {
- req.checkBody('password', 'Password is required').notEmpty();
- req.checkBody('new_password', 'New password is required').notEmpty();
- req.checkBody('confirm_new_password', 'Passwords do not match').equals(
- req.body.new_password
- );
- if (req.validationErrors()) {
- var errors = helpers.formatFormErrors(req.validationErrors());
- }
-
- if (!errors) {
- if (!checkPassword(req.user, req.param('password'))) {
- req.flash(
- 'error',
- 'Current password is not correct'
- );
- return res.redirect('/settings');
- }
- var hash = generateHash(req.param('password'));
- req.user.save({password: hash}, function(err) {
- req.flash(
- 'success',
- 'Password is successfully changed'
- );
- return res.redirect('/');
- })
- } else {
- res.locals.errors = errors;
- res.render('users/settings');
- }
-});
-
-// Forgot password
-router.get('/forgot-password', function(req, res) {
- res.render('users/forgot-password');
-});
-
-router.post('/forgot-password', function(req, res) {
- req.checkBody('email', 'Email is required').notEmpty();
- if (req.validationErrors()) {
- res.locals.errors = helpers.formatFormErrors(req.validationErrors());
- res.render('users/forgot-password');
- return;
- }
- if (req.models.User.one({email: req.param('email')}, function(err, user) {
- if (user) {
- var password = generateRandomPassword();
- var hash = generateHash(password);
- user.save({password: hash}, function() {
- sendNewPassword(user, password);
- req.flash(
- 'success',
- 'New password sent to your inbox'
- );
- return res.redirect('/signin');
- });
- } else {
- req.flash(
- 'error',
- 'No user with given email found'
- );
- return res.redirect('/forgot-password');
- }
- }));
-});
-
-// Sign Out
-router.get('/signout', function(req, res) {
- req.logout();
- res.redirect('/signin');
-});
-
-
-// Helper user functions
-// Auth settings
-passport.serializeUser(function(user, done) {
- done(null, user.id);
-});
-
-passport.deserializeUser(function(id, done) {
- findById(id, function (err, user) {
- done(err, user);
- });
-});
-
-passport.use(new LocalStrategy(
- {usernameField: 'email', passwordField: 'password'},
- function(username, password, done) {
- findByUsername(username, function(err, user) {
- if (err) {
- return done(err);
- }
- if (!user) {
- return done(null, false, { message: 'Unknown user ' + username });
- }
- if (!checkPassword(user, password)) {
- return done(null, false, { message: 'Invalid password' });
- }
- return done(null, user);
- })
- }
-));
-
-function findByUsername(username, fn) {
- orm.connect(settings.dsn, function(err, db) {
- db.load("../models", function (err) {
- var User = db.models.users;
- db.models.users.find({email: username}, function (err, users) {
- if (users.length) {
- return fn(null, users[0]);
- } else {
- return fn(null, null);
- }
- });
- });
- });
-}
-
-function findById(id, fn) {
- orm.connect(settings.dsn, function(err, db) {
- db.load("../models", function (err) {
- var User = db.models.users;
- User.get(id, function (err, user) {
- if (err) {
- fn(new Error('User ' + id + ' does not exist'));
- }
- return fn(null, user);
- });
- });
- });
-}
-
-function generateHash(password) {
- return bcrypt.hashSync(password, bcrypt.genSaltSync(10));
-}
-
-function checkPassword(user, password) {
- return bcrypt.compareSync(password, user.password);
-}
-
-function generateRandomPassword() {
- return Math.random().toString(36).replace(/[^a-z]+/g, '');
-}
-
-function sendNewPassword(user, password) {
- var mailer = nodemailer.createTransport(stubTransport());
- mailer.sendMail({
- from: 'norepy@notejamapp.com',
- to: user.email,
- subject: 'New notejam password',
- text: 'Your new password: ' + password
- }, function(err, info) {
- // sent mail to console output
- console.log(info.response.toString());
- });
-}
-
-module.exports = router;
diff --git a/express/notejam/settings.js b/express/notejam/settings.js
deleted file mode 100644
index 0350717b8..000000000
--- a/express/notejam/settings.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var settings = {
- development: {
- db: "notejam.db",
- dsn: "sqlite://notejam.db"
- },
- test: {
- db: "notejam_test.db",
- dsn: "sqlite://notejam_test.db"
- }
-};
-
-
-var env = process.env.NODE_ENV
-if (!env) {
- env = 'development'
-};
-module.exports = settings[env];
diff --git a/express/notejam/tests/config.js b/express/notejam/tests/config.js
deleted file mode 100644
index dfd5a09c9..000000000
--- a/express/notejam/tests/config.js
+++ /dev/null
@@ -1,25 +0,0 @@
-module.exports = {
- host: 'http://localhost',
- port: 3000,
-
- // build absolute url
- url: function(url) {
- return this.host + ":" + this.port + url;
- },
-
- // sign in user/agent
- signInUser: function (agent, user) {
- var self = this;
- return function(done) {
- agent
- .post(self.url('/signin'))
- .send(user)
- .end(onResponse);
-
- function onResponse(err, res) {
- res.should.have.status(200);
- return done();
- }
- };
- }
-}
diff --git a/express/notejam/tests/notes.js b/express/notejam/tests/notes.js
deleted file mode 100644
index da60c9aac..000000000
--- a/express/notejam/tests/notes.js
+++ /dev/null
@@ -1,141 +0,0 @@
-// Enable test environment
-process.env.NODE_ENV = 'test';
-
-var request = require('superagent');
-var should = require('should');
-require('should-http');
-
-var db = require('../db');
-var config = require('./config')
-var app = require('../app');
-
-app.listen(config.port);
-
-before(function(done) {
- db.createTables(function() {
- db.applyFixtures(done);
- });
-});
-
-describe('Note', function() {
-
- var agent = request.agent();
- before(
- config.signInUser(
- agent, {email: 'user1@example.com', password: 'password'}
- )
- );
-
- describe('can be', function() {
- it('successfully created', function(done) {
- agent
- .post(config.url('/notes/create'))
- .send({name: 'New note', text: 'text', pad_id: 1})
- .end(function(error, res){
- res.redirects.should.eql([config.url('/')]);
- res.text.should.containEql('Note is successfully created');
- done();
- });
- });
-
- it('successfully edited', function(done) {
- agent
- .post(config.url('/notes/1/edit'))
- .send({name: 'New name', text: 'New text'})
- .end(function(error, res){
- res.redirects.should.eql([config.url('/notes/1')]);
- res.text.should.containEql('Note is successfully updated');
- done();
- });
- });
-
- it('successfully deleted', function(done) {
- agent
- .post(config.url('/notes/2/delete'))
- .end(function(error, res){
- res.redirects.should.eql([config.url('/')]);
- res.text.should.containEql('Note is successfully deleted');
- done();
- });
- });
-
- it('successfully viewed', function(done) {
- agent
- .get(config.url('/notes/1'))
- .end(function(error, res){
- res.should.have.status(200);
- done();
- });
- });
- });
-
- describe('can not be', function() {
- it('created if required fields are missing', function(done) {
- agent
- .post(config.url('/notes/create'))
- .send({name: '', text: ''})
- .end(function(error, res){
- res.text.should.containEql('Name is required');
- res.text.should.containEql('Text is required');
- done();
- });
- });
-
- it('edited if required fields are missing', function(done) {
- agent
- .post(config.url('/notes/1/edit'))
- .send({name: '', text: ''})
- .end(function(error, res){
- res.text.should.containEql('Name is required');
- res.text.should.containEql('Text is required');
- done();
- });
- });
-
- it('edited by not an owner', function(done) {
- var agent = request.agent();
- var signed = config.signInUser(
- agent, {email: 'user2@example.com', password: 'password'}
- );
- signed(function() {
- agent
- .post(config.url('/notes/1/edit'))
- .send({name: 'new name', text: 'new text'})
- .end(function(error, res){
- res.should.have.status(404);
- done();
- });
- })
- });
-
- it('deleted by not an owner', function(done) {
- var agent = request.agent();
- var signed = config.signInUser(
- agent, {email: 'user2@example.com', password: 'password'}
- );
- signed(function() {
- agent
- .post(config.url('/notes/1/delete'))
- .end(function(error, res){
- res.should.have.status(404);
- done();
- });
- })
- });
-
- it('viewed by not an owner', function(done) {
- var agent = request.agent();
- var signed = config.signInUser(
- agent, {email: 'user2@example.com', password: 'password'}
- );
- signed(function() {
- agent
- .get(config.url('/notes/1'))
- .end(function(error, res){
- res.should.have.status(404);
- done();
- });
- })
- });
- });
-});
diff --git a/express/notejam/tests/pads.js b/express/notejam/tests/pads.js
deleted file mode 100644
index 00f1dab2c..000000000
--- a/express/notejam/tests/pads.js
+++ /dev/null
@@ -1,138 +0,0 @@
-// Enable test environment
-process.env.NODE_ENV = 'test';
-
-var request = require('superagent');
-var should = require('should');
-require('should-http');
-
-var db = require('../db');
-var config = require('./config');
-var app = require('../app');
-
-app.listen(3000);
-
-before(function(done) {
- db.createTables(function() {
- db.applyFixtures(done);
- });
-});
-
-describe('Pad', function() {
-
- var agent = request.agent();
- before(
- config.signInUser(agent, {email: 'user1@example.com', password: 'password'})
- );
-
- describe('can be', function() {
- it('successfully created', function(done) {
- agent
- .post(config.url('/pads/create'))
- .send({name: 'New pad'})
- .end(function(error, res){
- res.redirects.should.eql([config.url('/')]);
- res.text.should.containEql('Pad is successfully created');
- done();
- });
- });
-
- it('successfully edited', function(done) {
- agent
- .post(config.url('/pads/1/edit'))
- .send({name: 'New pad name'})
- .end(function(error, res){
- res.redirects.should.eql([config.url('/')]);
- res.text.should.containEql('Pad is successfully updated');
- done();
- });
- });
-
- it('successfully deleted', function(done) {
- agent
- .post(config.url('/pads/2/delete'))
- .end(function(error, res){
- res.redirects.should.eql([config.url('/')]);
- res.text.should.containEql('Pad is successfully deleted');
- done();
- });
- });
-
- it('successfully viewed', function(done) {
- agent
- .get(config.url('/pads/1'))
- .end(function(error, res){
- res.should.have.status(200);
- res.text.should.containEql('Pad settings');
- done();
- });
- });
- });
-
- describe('can not be', function() {
- it('created if required fields are missing', function(done) {
- agent
- .post(config.url('/pads/create'))
- .send({name: ''})
- .end(function(error, res){
- res.text.should.containEql('Name is required');
- done();
- });
- });
-
- it('edited if required fields are missing', function(done) {
- agent
- .post(config.url('/pads/1/edit'))
- .send({name: ''})
- .end(function(error, res){
- res.text.should.containEql('Name is required');
- done();
- });
- });
-
- it('edited by not an owner', function(done) {
- var agent = request.agent();
- var signed = config.signInUser(
- agent, {email: 'user2@example.com', password: 'password'}
- );
- signed(function() {
- agent
- .post(config.url('/pads/1/edit'))
- .send({name: 'new name'})
- .end(function(error, res){
- res.should.have.status(404);
- done();
- });
- })
- });
-
- it('deleted by not an owner', function(done) {
- var agent = request.agent();
- var signed = config.signInUser(
- agent, {email: 'user2@example.com', password: 'password'}
- );
- signed(function() {
- agent
- .post(config.url('/pads/1/delete'))
- .end(function(error, res){
- res.should.have.status(404);
- done();
- });
- })
- });
-
- it('viewed by not an owner', function(done) {
- var agent = request.agent();
- var signed = config.signInUser(
- agent, {email: 'user2@example.com', password: 'password'}
- );
- signed(function() {
- agent
- .get(config.url('/pads/1'))
- .end(function(error, res){
- res.should.have.status(404);
- done();
- });
- })
- });
- });
-});
diff --git a/express/notejam/tests/users.js b/express/notejam/tests/users.js
deleted file mode 100644
index 958f6caaa..000000000
--- a/express/notejam/tests/users.js
+++ /dev/null
@@ -1,106 +0,0 @@
-// Enable test environment
-process.env.NODE_ENV = 'test';
-
-var request = require('superagent');
-var should = require('should');
-require('should-http');
-
-var db = require('../db');
-var config = require('./config');
-var app = require('../app');
-
-app.listen(3000);
-
-before(function(done) {
- db.createTables(function() {
- db.applyFixtures(done);
- });
-});
-
-describe('User', function(){
-
- it('can successfully sign in', function(done){
- var agent = request.agent();
- agent
- .post(config.url('/signin'))
- .send({email: 'user1@example.com', password: 'password' })
- .end(function(error, res){
- res.redirects.should.eql([config.url('/')]);
- done();
- });
- });
-
- describe('cant sign in', function() {
- it('with wrong credentials', function(done) {
- var agent = request.agent();
- agent
- .post(config.url('/signin'))
- .send({email: 'unknown@email.com', password: 'unknown' })
- .end(function(error, res){
- res.text.should.containEql('Unknown user');
- done();
- });
- });
-
- it('if required fields are missing', function(done){
- var agent = request.agent();
- agent
- .post(config.url('/signin'))
- .send({email: '', password: '' })
- .end(function(error, res){
- res.text.should.containEql('Email is required');
- res.text.should.containEql('Password is required');
- done();
- });
- });
- });
-
- it('can successfully sign up', function(done) {
- var agent = request.agent();
- agent
- .post(config.url('/signup'))
- .send({email: 'usersadfasdf@example.com', password: 'password'})
- .end(function(error, res){
- res.redirects.should.eql([config.url('/signin')]);
- done();
- });
- });
-
- describe('cant signup', function() {
- it('if email is invalid', function(done) {
- var agent = request.agent();
- agent
- .post(config.url('/signup'))
- .send({email: 'invalid', password: 'password' })
- .end(function(error, res){
- res.text.should.containEql('Invalid email');
- done();
- });
- });
-
- it('if required fields are missing', function(done) {
- var agent = request.agent();
- agent
- .post(config.url('/signup'))
- .send({email: '', password: '' })
- .end(function(error, res){
- res.text.should.containEql('Invalid email');
- res.text.should.containEql('Password is required');
- done();
- });
- });
-
- it('if user already exists', function(done) {
- var agent = request.agent();
- agent
- .post(config.url('/signup'))
- .send({email: 'user1@example.com', password: 'password' })
- .end(function(error, res){
- res.text.should.containEql('User with given email already exists');
- done();
- });
- });
-
- // @TODO implement "if passwords do not match" case
- });
-})
diff --git a/express/notejam/views/error.jade b/express/notejam/views/error.jade
deleted file mode 100644
index db0601f24..000000000
--- a/express/notejam/views/error.jade
+++ /dev/null
@@ -1,6 +0,0 @@
-extends layout
-
-block content_area
- h1= message
- h2= error.status
- pre #{error.stack}
diff --git a/express/notejam/views/layout.jade b/express/notejam/views/layout.jade
deleted file mode 100644
index f94fa8bcb..000000000
--- a/express/notejam/views/layout.jade
+++ /dev/null
@@ -1,44 +0,0 @@
-include mixins.jade
-
-doctype html
-html(lang='en')
- meta(charset='utf-8')
- title
- block title
- meta(name='description', content='Notejam: Unified sample app')
- meta(name='author', content='Notejam')
- meta(name='viewport', content='width=device-width, initial-scale=1, maximum-scale=1')
- link(rel='stylesheet', href='http://cdnjs.cloudflare.com/ajax/libs/skeleton/1.2/base.min.css')
- link(rel='stylesheet', href='http://cdnjs.cloudflare.com/ajax/libs/skeleton/1.2/skeleton.min.css')
- link(rel='stylesheet', href='http://cdnjs.cloudflare.com/ajax/libs/skeleton/1.2/layout.css')
- link(rel='stylesheet', href='/stylesheets/style.css')
- body
- .container
- .sixteen.columns
- .sign-in-out-block
- if req.isAuthenticated()
- | #{req.user.email}:
- a(href='/settings') Account settings
- |
- a(href='/signout') Sign out
- else
- a(href='/signup') Sign up
- |
- a(href='/signin') Sign in
- .sixteen.columns
- h1.bold-header
- a.header(href="/")
- | note
- span.jam
- | jam:
- span
- block title
- block content_area
- hr.footer
- .footer
- div
- | Notejam: Express application
- div
- Github , Twitter , created by Serhii Komar
- a(href='https://github.com/komarserjio/notejam')
- img(style='position: absolute; top: 0; right: 0; border: 0;', src='https://s3.amazonaws.com/github/ribbons/forkme_right_gray_6d6d6d.png', alt='Fork me on GitHub')
diff --git a/express/notejam/views/main.jade b/express/notejam/views/main.jade
deleted file mode 100644
index 2441f8ff2..000000000
--- a/express/notejam/views/main.jade
+++ /dev/null
@@ -1,18 +0,0 @@
-extends layout
-
-block content_area
- .three.columns
- h4#logo My pads
- nav
- if pads.length
- ul
- each pad in pads
- li
- a(href='/pads/#{pad.id}') #{pad.name}
- else
- p.empty= 'No pads yet'
- hr
- a(href='/pads/create') New pad
- .thirteen.columns.content-area
- +render_flash_messages(flash_messages)
- block content
diff --git a/express/notejam/views/mixins.jade b/express/notejam/views/mixins.jade
deleted file mode 100644
index acfb1a12d..000000000
--- a/express/notejam/views/mixins.jade
+++ /dev/null
@@ -1,13 +0,0 @@
-mixin error(field, errors)
- if errors && (field in errors)
- ul.errors
- li= errors[field]
-
-// render flash messages
-mixin render_flash_messages(messages)
- if messages.success.length || messages.error.length
- div.alert-area
- each message in messages.success
- div.alert.alert-success= message
- each message in messages.error
- div.alert.alert-error= message
diff --git a/express/notejam/views/notes/create.jade b/express/notejam/views/notes/create.jade
deleted file mode 100644
index 8a3dd27f4..000000000
--- a/express/notejam/views/notes/create.jade
+++ /dev/null
@@ -1,19 +0,0 @@
-extends ../main
-
-block title
- | New note
-
-block content
- form.note(method='POST')
- label(for='name') Name
- input#name(type='text', name='name')
- +error('name', errors)
- label(for='text') Text
- textarea(name='text')
- +error('text', errors)
- label(for='pad_id') Pad
- select(name='pad_id')
- option --------------
- each pad in req.user.pads
- option(value=pad.id, selected=pad.id == padId) #{pad.name}
- input(type='submit', value='Save')
diff --git a/express/notejam/views/notes/delete.jade b/express/notejam/views/notes/delete.jade
deleted file mode 100644
index 61224f24d..000000000
--- a/express/notejam/views/notes/delete.jade
+++ /dev/null
@@ -1,12 +0,0 @@
-extends ../main
-
-block title
- | #{note.name}
-
-block content
- p Are you sure you want to delete the note?
- form(method='post')
- input(type='submit', class="red", value='Yes, delete I want to delete this note')
- |
- a(href='/notes/#{note.id}') Cancel
-
diff --git a/express/notejam/views/notes/edit.jade b/express/notejam/views/notes/edit.jade
deleted file mode 100644
index 95b1233e6..000000000
--- a/express/notejam/views/notes/edit.jade
+++ /dev/null
@@ -1,20 +0,0 @@
-extends ../main
-
-block title
- | #{note.name}
-
-block content
- form.note(method='POST')
- label(for='name') Name
- input#name(type='text', name='name', value='#{note.name}')
- +error('name', errors)
- label(for='text') Text
- textarea(name='text') #{note.text}
- +error('text', errors)
- label(for='pad_id') Pad
- select(name='pad_id')
- option ----------
- each pad in req.user.pads
- option(value=pad.id, selected=pad.id == note.pad_id) #{pad.name}
- input(type='submit', value='Save')
-
diff --git a/express/notejam/views/notes/list.jade b/express/notejam/views/notes/list.jade
deleted file mode 100644
index 868dfa47b..000000000
--- a/express/notejam/views/notes/list.jade
+++ /dev/null
@@ -1,33 +0,0 @@
-extends ../main
-
-block title
- | #{title}
-
-block content
- if notes.length
- table.notes
- tr
- th.note
- | Note
- a.sort_arrow(href='/?order=-name') ↑
- a.sort_arrow(href='/?order=name') ↓
- th
- | Pad
- th.date
- | Last modified
- a.sort_arrow(href='/?order=-updated_at') ↑
- a.sort_arrow(href='/?order=updated_at') ↓
- each note in notes
- tr
- td
- a(href='/notes/#{note.id}') #{note.name}
- td.pad
- if note.pad
- a(href='/pads/#{note.pad.id}') #{note.pad.name}
- else
- | No pad
- td.hidden-text.date #{note.updatedAt()}
- else
- p.empty Create your first note
- a.button(href='/notes/create') New note
-
diff --git a/express/notejam/views/notes/view.jade b/express/notejam/views/notes/view.jade
deleted file mode 100644
index 79a7c933a..000000000
--- a/express/notejam/views/notes/view.jade
+++ /dev/null
@@ -1,12 +0,0 @@
-extends ../main
-
-block title
- | #{note.name}
-
-block content
- p.hidden-text Last edited #{note.updatedAt()}
- div.note
- p #{note.text}
-
- a.button(href='/notes/#{note.id}/edit') Edit
- a.delete-note(href='/notes/#{note.id}/delete') Delete it
diff --git a/express/notejam/views/pads/create.jade b/express/notejam/views/pads/create.jade
deleted file mode 100644
index 416c94bce..000000000
--- a/express/notejam/views/pads/create.jade
+++ /dev/null
@@ -1,11 +0,0 @@
-extends ../main
-
-block title
- | New pad
-
-block content
- form(method='POST')
- label(for='name') Name
- input#name(type='text', name='name')
- +error('name', errors)
- input(type='submit', value='Save')
diff --git a/express/notejam/views/pads/delete.jade b/express/notejam/views/pads/delete.jade
deleted file mode 100644
index 09597cc8e..000000000
--- a/express/notejam/views/pads/delete.jade
+++ /dev/null
@@ -1,11 +0,0 @@
-extends ../main
-
-block title
- | #{pad.name}
-
-block content
- p Are you sure you want to delete the pad?
- form(method='post')
- input(type='submit', class="red", value='Yes, delete I want to delete this pad')
- |
- a(href="/pads/#{pad.id}/edit") Cancel
diff --git a/express/notejam/views/pads/edit.jade b/express/notejam/views/pads/edit.jade
deleted file mode 100644
index 0d6b013b0..000000000
--- a/express/notejam/views/pads/edit.jade
+++ /dev/null
@@ -1,14 +0,0 @@
-extends ../main
-
-block title
- | #{pad.name}
-
-block content
- form(method='POST')
- label(for='name') Name
- input#name(type='text', name='name', value='#{pad.name}')
- +error('name', errors)
- input(type='submit', value='Save')
- div
- a.red(href="/pads/#{pad.id}/delete") Delete pad
-
diff --git a/express/notejam/views/pads/list.jade b/express/notejam/views/pads/list.jade
deleted file mode 100644
index 95f248233..000000000
--- a/express/notejam/views/pads/list.jade
+++ /dev/null
@@ -1,27 +0,0 @@
-extends ../main
-
-block title
- | #{title}
-
-block content
- if notes.length
- table.notes
- tr
- th.note
- | Note
- a.sort_arrow(href='/pads/#{pad.id}/?order=-name') ↑
- a.sort_arrow(href='/pads/#{pad.id}/?order=name') ↓
- th.date
- | Last modified
- a.sort_arrow(href='/pads/#{pad.id}/?order=-updated_at') ↑
- a.sort_arrow(href='/pads/#{pad.id}/?order=updated_at') ↓
- each note in notes
- tr
- td
- a(href='/notes/#{note.id}') #{note.name}
- td.hidden-text.date #{note.updatedAt()}
- else
- p.empty Create your first note in the pad
- a.button(href='/notes/create?pad=#{pad.id}') New note
- |
- a(href="/pads/#{pad.id}/edit") Pad settings
diff --git a/express/notejam/views/user.jade b/express/notejam/views/user.jade
deleted file mode 100644
index f6c3513d2..000000000
--- a/express/notejam/views/user.jade
+++ /dev/null
@@ -1,6 +0,0 @@
-extends layout
-
-block content_area
- .sixteen.columns.content-area
- +render_flash_messages(flash_messages)
- block content
diff --git a/express/notejam/views/users/forgot-password.jade b/express/notejam/views/users/forgot-password.jade
deleted file mode 100644
index 70a856e3d..000000000
--- a/express/notejam/views/users/forgot-password.jade
+++ /dev/null
@@ -1,11 +0,0 @@
-extends ../user
-
-block title
- | Forgot password?
-
-block content
- form.offset-by-six.sign-in(method='POST')
- label(for='email') Email
- input#email(type='text', name='email')
- +error('email', errors)
- input(type='submit', value='Get new password')
diff --git a/express/notejam/views/users/settings.jade b/express/notejam/views/users/settings.jade
deleted file mode 100644
index bda9ec5f3..000000000
--- a/express/notejam/views/users/settings.jade
+++ /dev/null
@@ -1,18 +0,0 @@
-extends ../user
-
-block title
- | Account settings
-
-block content
- form.offset-by-six.sign-in(method='POST')
- label(for='password') Current password
- input#email(type='password', name='password')
- +error('password', errors)
- label(for='new_password') New Password
- input#password(type='password', name='new_password')
- +error('new_password', errors)
- label(for='confirm_new_password') Confirm New Password
- input#confirm_password(type='password', name='confirm_new_password')
- +error('confirm_new_password', errors)
- input(type='submit', value='Change password')
-
diff --git a/express/notejam/views/users/signin.jade b/express/notejam/views/users/signin.jade
deleted file mode 100644
index dcd13b36f..000000000
--- a/express/notejam/views/users/signin.jade
+++ /dev/null
@@ -1,18 +0,0 @@
-extends ../user
-
-block title
- | Sign In
-
-block content
- form.offset-by-six.sign-in(method='POST')
- label(for='email') Email
- input#email(type='text', name='email')
- +error('email', errors)
- label(for='password') Password
- input#password(type='password', name='password')
- +error('password', errors)
- input(type='submit', value='Sign In')
- | or Sign Up
- hr
- p
- a.small-red(href='/forgot-password') Forgot password?
diff --git a/express/notejam/views/users/signup.jade b/express/notejam/views/users/signup.jade
deleted file mode 100644
index c7e487d80..000000000
--- a/express/notejam/views/users/signup.jade
+++ /dev/null
@@ -1,22 +0,0 @@
-extends ../user
-
-block title
- | Sign Up
-
-block content
- form.offset-by-six.sign-in(method='POST')
- label(for='email') Email
- input#email(type='text', name='email')
- +error('email', errors)
- label(for='password') Password
- input#password(type='password', name='password')
- +error('password', errors)
- label(for='confirm_password') Confirm Password
- input#confirm_password(type='password', name='confirm_password')
- +error('confirm_password', errors)
- input(type='submit', value='Sign Up')
- | or Sign In
- hr
- p
- a.small-red(href='#forgot-password') Forgot password?
-
diff --git a/flask/README.rst b/flask/README.rst
deleted file mode 100644
index f9924f074..000000000
--- a/flask/README.rst
+++ /dev/null
@@ -1,89 +0,0 @@
-**************
-Notejam: Flask
-**************
-
-Notejam application implemented using `Flask `_ microframework.
-
-Flask version: 1.1.1
-
-Flask extension used:
-
-* Flask-Login
-* Flask-Mail
-* Flask-SQLAlchemy
-* Flask-Testing
-* Flask-WTF
-
-==========================
-Installation and launching
-==========================
-
------
-Clone
------
-
-Clone the repo:
-
-.. code-block:: bash
-
- $ git clone git@github.com:nordcloud/notejam.git YOUR_PROJECT_DIR/
-
--------
-Install
--------
-Use `virtualenv `_ or `virtualenvwrapper `_
-for `environment management `_.
-
-Install dependencies:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/flask/
- $ pip install -r requirements.txt
-
-Create database schema:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/flask/
- $ python db.py
-
-------
-Launch
-------
-
-Start flask web server:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/flask/
- $ python runserver.py
-
-Go to http://127.0.0.1:5000/ in your browser
-
----------
-Run tests
----------
-
-Run functional and unit tests:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/flask/
- $ python tests.py
-
-
-============
-Contribution
-============
-
-Do you have python/flask experience? Help the app to follow python and flask best practices.
-
-Please send your pull requests in the ``master`` branch.
-Always prepend your commits with framework name:
-
-.. code-block:: bash
-
- Flask: Implemented sign in functionality
-
-Read `contribution guide `_ for details.
diff --git a/flask/db.py b/flask/db.py
deleted file mode 100644
index 4190c769a..000000000
--- a/flask/db.py
+++ /dev/null
@@ -1,4 +0,0 @@
-from notejam import db
-
-# Create db schema
-db.create_all()
diff --git a/flask/notejam/__init__.py b/flask/notejam/__init__.py
deleted file mode 100644
index 4257505a3..000000000
--- a/flask/notejam/__init__.py
+++ /dev/null
@@ -1,19 +0,0 @@
-from flask import Flask
-from flask_sqlalchemy import SQLAlchemy
-from flask_login import LoginManager
-from flask_mail import Mail
-
-# @TODO use application factory approach
-app = Flask(__name__)
-app.config.from_object('notejam.config.Config')
-app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
-db = SQLAlchemy(app)
-
-login_manager = LoginManager()
-login_manager.login_view = "signin"
-login_manager.init_app(app)
-
-mail = Mail()
-mail.init_app(app)
-
-from notejam import views
diff --git a/flask/notejam/config.py b/flask/notejam/config.py
deleted file mode 100644
index de9c901fd..000000000
--- a/flask/notejam/config.py
+++ /dev/null
@@ -1,24 +0,0 @@
-import os
-basedir = os.path.abspath(os.path.dirname(__file__))
-
-class Config(object):
- DEBUG = False
- TESTING = False
- SECRET_KEY = 'notejam-flask-secret-key'
- WTF_CSRF_ENABLED = True
- CSRF_SESSION_KEY = 'notejam-flask-secret-key'
- SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'notejam.db')
-
-
-class ProductionConfig(Config):
- DEBUG = False
-
-
-class DevelopmentConfig(Config):
- DEVELOPMENT = True
- DEBUG = True
-
-
-class TestingConfig(Config):
- TESTING = True
- WTF_CSRF_ENABLED = False
diff --git a/flask/notejam/forms.py b/flask/notejam/forms.py
deleted file mode 100644
index 6b13bc53a..000000000
--- a/flask/notejam/forms.py
+++ /dev/null
@@ -1,84 +0,0 @@
-from flask_wtf import FlaskForm
-from wtforms import StringField, PasswordField, SelectField, TextAreaField
-from wtforms.validators import Required, Email, EqualTo, ValidationError
-
-from notejam.models import User, Pad
-
-
-class SigninForm(FlaskForm):
- email = StringField('Email', validators=[Required(), Email()])
- password = PasswordField('Password', validators=[Required()])
-
-
-class SignupForm(FlaskForm):
- email = StringField('Email', validators=[Required(), Email()])
- password = PasswordField('Password', validators=[Required()])
- repeat_password = PasswordField(
- 'Repeat Password',
- validators=[
- Required(), EqualTo(
- 'password', message="Your passwords do not match"
- )
- ]
- )
-
- def validate_email(self, field):
- if User.query.filter_by(email=field.data).count():
- raise ValidationError(
- 'User with this email is already signed up'
- )
-
-
-class NoteForm(FlaskForm):
- name = StringField('Name', validators=[Required()])
- text = TextAreaField('Note', validators=[Required()])
- pad = SelectField('Pad', choices=[], coerce=int)
-
- # @TODO use wtforms.ext.sqlalchemy.fields.QuerySelectField?
- def __init__(self, user=None, **kwargs):
- super(NoteForm, self).__init__(**kwargs)
- self.pad.choices = [(0, '---------')] + [
- (p.id, p.name) for p in Pad.query.filter_by(user=user)
- ]
-
-
-class PadForm(FlaskForm):
- name = StringField('Name', validators=[Required()])
-
-
-# dummy form
-class DeleteForm(FlaskForm):
- pass
-
-
-class ChangePasswordForm(FlaskForm):
- old_password = PasswordField('Old Password', validators=[Required()])
- new_password = PasswordField('New Password', validators=[Required()])
- repeat_new_password = PasswordField(
- 'Repeat New Password',
- validators=[
- Required(), EqualTo(
- 'new_password', message="Your passwords don't match"
- )
- ]
- )
-
- def __init__(self, **kwargs):
- super(ChangePasswordForm, self).__init__(**kwargs)
- self.user = kwargs['user']
-
- def validate_old_password(self, field):
- if not self.user.check_password(field.data):
- raise ValidationError(
- 'Incorrect old password'
- )
-
-
-class ForgotPasswordForm(FlaskForm):
- email = StringField('Email', validators=[Required(), Email()])
-
- def validate_email(self, field):
- if not User.query.filter_by(email=field.data).count():
- raise ValidationError(
- 'No user with given email found'
- )
diff --git a/flask/notejam/models.py b/flask/notejam/models.py
deleted file mode 100755
index fa717ffba..000000000
--- a/flask/notejam/models.py
+++ /dev/null
@@ -1,66 +0,0 @@
-import datetime
-
-from werkzeug.security import (generate_password_hash,
-check_password_hash)
-from flask_login import UserMixin
-
-from notejam import db
-
-
-class User(db.Model, UserMixin):
- id = db.Column(db.Integer, primary_key=True)
- email = db.Column(db.String(120), unique=True)
- password = db.Column(db.String(100))
-
- @staticmethod
- def authenticate(email, password):
- user = User.query.filter_by(email=email).first()
- if user and user.check_password(password):
- return user
-
- def set_password(self, password):
- self.password = generate_password_hash(password)
-
- def check_password(self, password):
- return check_password_hash(self.password, password)
-
- def __repr__(self):
- return '' % self.email
-
-
-class Note(db.Model):
- id = db.Column(db.Integer, primary_key=True)
- name = db.Column(db.String(100))
- text = db.Column(db.Text)
- created_at = db.Column(db.DateTime, default=datetime.datetime.now)
- updated_at = db.Column(
- db.DateTime,
- default=datetime.datetime.now,
- onupdate=datetime.datetime.now
- )
-
- user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
- user = db.relationship('User', backref=db.backref('notes', lazy='dynamic'))
-
- pad_id = db.Column(db.Integer, db.ForeignKey('pad.id'))
- pad = db.relationship(
- 'Pad',
- backref=db.backref('notes', lazy='dynamic', cascade='all')
- )
-
- def __repr__(self):
- return '' % self.name
-
-
-class Pad(db.Model):
- id = db.Column(db.Integer, primary_key=True)
- name = db.Column(db.String(100))
-
- user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
- user = db.relationship(
- 'User',
- backref=db.backref('pads', lazy='dynamic', cascade='all')
- )
-
- def __repr__(self):
- return '' % self.name
diff --git a/flask/notejam/static/css/style.css b/flask/notejam/static/css/style.css
deleted file mode 100644
index b800e615d..000000000
--- a/flask/notejam/static/css/style.css
+++ /dev/null
@@ -1,350 +0,0 @@
-/*
-* Skeleton V1.0.3
-* Copyright 2011, Dave Gamache
-* www.getskeleton.com
-* Free to use under the MIT license.
-* http://www.opensource.org/licenses/mit-license.php
-* 7/17/2011
-*/
-
-
-/* Documentation Styles
-================================================== */
- div.container {
- padding-top: 40px; }
-
- /* Doc nav */
- nav {
- width: 160px; }
- #logo, .bold-header {
- margin-bottom: 30px;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- letter-spacing: -1px;
- color: #555;
- font-weight: bold; }
- .bold-header span {
- font-weight: normal;
- font-size: 23px;
- }
- .bold-header a.header {
- text-decoration: none;
- color: inherit;
- }
- .bold-header span.jam {
- font-size: 46px;
- line-height: 50px;
- }
- nav ul {
- float: left; }
- nav ul li {
- display: block;
- margin-bottom: 10px; }
- nav ul li a,
- nav ul li a:visited,
- nav ul li a:active {
- font-size: 14px;
- color: #555;
- text-decoration: none;
- font-weight: bold; }
- nav ul li a:hover,
- nav ul li a:focus {
- color: #222; }
- header h1 {
- font-size: 52px;
- line-height: 61px;
- letter-spacing: -1px;
- font-weight: normal;
- font-family: "Georgia", "Times New Roman", Helvetica, Arial, sans-serif; }
- hr.large {
- border: none;
- height: 8px;
- background: #ebebeb;
- margin: 50px 0; }
- div.doc-section {
- margin: 30px 0; }
-
- #whatAndWhy .row {
- padding: 30px 0 0; }
-
- #typography blockquote {
- margin-top: 20px; }
-
- .hidden-code a {
- font-size: 12px;
- color: #999; }
- .hidden-code>div {
- display: none; }
-
-
- /* Grid */
- #grid .column,
- #grid .columns {
- background: #ddd;
- height: 25px;
- line-height: 25px;
- margin-bottom: 10px;
- text-align: center;
- text-transform: uppercase;
- color: #555;
- font-size: 12px;
- font-weight: bold;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px; }
- #grid .column:hover,
- #grid .columns:hover {
- background: #bbb;
- color: #333; }
- #grid .example-grid { overflow: hidden; }
-
- .post-button-note,
- .post-button-note a {
- font-size: 11px;
- color: #999; }
-
- #examples .four.columns a {
- text-decoration: none;
- }
- #examples .four.columns a:hover {
- text-decoration: underline;
- }
-
-
- .resize {
- position: fixed;
- bottom: 0;
- right: 0;
- height: 80px;
- width: 80px;
- background: url(images/resize.png); }
-
-
- img {
- max-width: 100%;
- height: auto; }
-
- .gist-meta { display: none !important;}
-
- ul ul ul li { margin-bottom: 3px; }
-
- .twitter-share-button { margin-bottom: -18px; }
-
-.carbonad,
-.carbonad-image,
-.carbonad-text,
-.carbonad-tag {
- background: none !important;
- border: none !important;
- margin-left: 0 !important;
-}
-.carbonad-tag {
- margin-top: 6px !important;
- padding-top: 0 !important;
-}
-.carbonad-text {
- height: auto !important;
-}
-.carbonad-image {
- margin-top: 0 !important;
-}
-
-.hidden-text {
- font-size: 12px;
- color: #999;
-}
-
-td.date, th.date {
- text-align: right;
-}
-
-td.date {
- font-style: italic;
-}
-
-form.note input[type="text"], form.note textarea {
- width: 100%;
-}
-
-form hr {
- width: 218px;
- margin: 10px 0px;
-}
-
-form.note textarea {
- height: 250px;
-}
-
-div.content-area {
- min-height: 600px;
-}
-
-hr.footer {
- margin-bottom: 10px;
-}
-
-div.footer {
- margin-bottom: 10px;
- text-align: center;
- font-size: 12px;
-}
-
-form.sign-in {
- margin: 50px 0 0 0;
-}
-
-.sort_arrow {
- text-decoration: none;
-}
-
-.sort_arrow:hover {
- text-decoration: none;
- color: red;
-}
-
-div.sign-in-out-block {
- position: absolute;
- right: 14px;
- top: 8px;
- font-size: 12px;
-}
-
-div.sign-in-out-block a {
- /*text-decoration: none;*/
-}
-
-a.small-red {
- color: red;
- font-size: 12px;
-}
-
-table.notes {
- margin: 0 0 20px 0;
-}
-
-table.notes th.note {
- width: 72%;
-}
-
-table.notes td.pad {
- color: grey;
-}
-
-table.notes td.pad a {
- color: grey;
- text-decoration: underline;
- font-style: normal;
-}
-
-
-table.notes td.pad a:hover {
- color: black;
-}
-
-p.empty {
- color: grey;
- font-style: italic;
-}
-
-a.delete-note {
- float: right;
- font-size: 12px;
- color: red;
-}
-
-.red, input.red {
- color: red !important;
-}
-
-ul.errorlist, ul.errors {
- margin: -18px 0 0 0;
-}
-
-ul.errorlist li, ul.errors li {
- color: red;
-}
-
-.alert-area {
- text-align: center;
-}
-
-.alert {
- padding: 5px 8px;
- margin: 0 0 12px 0;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
-}
-
-.alert-success {
- color: #468847;
- background-color: #dff0d8;
- border: 1px solid #d6e9c6;
-}
-
-.alert-error {
- color: #b94a48;
- background-color: #f2dede;
- border: 1px solid #eed3d7;
-}
-
- /* Mobile */
- @media only screen and (max-width: 767px) {
- header h1 { font-size: 34px; line-height: 37px; }
- nav { position: relative; }
- nav ul,
- .carbonad {
- display: none;
- }
- #logo { text-align: left; }
- #examples .four.columns {
- padding-top: 30px;
- }
- }
-
- /* Mobile Landscape */
- @media only screen and (min-width: 480px) and (max-width: 767px) {
- nav ul {
- display: none;
- }
- }
-
- /* Non 960 */
- @media only screen and (max-width: 959px) {
- #logo {
- font-size: 21px;
- margin-bottom: 15px; }
- nav .button {
- padding: 9px 20px 11px; }
- }
-
- /* iPad Portrait/Browser */
- @media only screen and (min-width: 768px) and (max-width: 959px) {
- nav {
- width: 124px; }
- }
-
- /* Mobile/Browser */
- @media only screen and (max-width: 767px) {}
-
- /* Mobile Landscape/Browser */
- @media only screen and (min-width: 480px) and (max-width: 767px) {}
-
- /* Anything smaller than standard 960 */
- @media only screen and (max-width: 959px) {}
-
-
- /* iPad Portrait Only */
- @media only screen and (min-width: 768px) and (max-width: 959px) and (max-device-width: 1000px) {}
-
- /* Mobile Only */
- @media only screen and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Mobile Landscape Only */
- @media only screen and (min-width: 480px) and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Anything smaller than standard 960 on a device */
- @media only screen and (max-width: 959px) and (max-device-width: 1000px) {
- .resize { display: none; }
- }
-
-
diff --git a/flask/notejam/static/css/tables.css b/flask/notejam/static/css/tables.css
deleted file mode 100644
index fb4441935..000000000
--- a/flask/notejam/static/css/tables.css
+++ /dev/null
@@ -1,45 +0,0 @@
-table {
- width: 100%;
- border-collapse: collapse;
-}
-
-table th, table td {
- padding: 10px 10px 9px;
- font-size: 13px;
- line-height: 18px;
- text-align: left;
-}
-
-table td {
- vertical-align: top;
- border-top: solid 1px #ddd;
-}
-
-table th {
- padding-top: 9px;
- font-weight: bold;
- vertical-align: middle;
-}
-
-table.condensed th, table.condensed td {
- padding: 5px 5px 4px;
-}
-
-table.bordered {
- border-collapse: separate;
- border: solid 1px #ddd;
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
-}
-
-table.bordered th + th,
-table.bordered th + td,
-table.bordered td + td {
- border-left: solid 1px #ddd;
-}
-
-.zebra-striped tbody tr:nth-child(odd) td,
-.zebra-striped tbody tr:nth-child(odd) th {
- background: #f5f5f5;
-}
diff --git a/flask/notejam/templates/_helpers.html b/flask/notejam/templates/_helpers.html
deleted file mode 100644
index bea460a16..000000000
--- a/flask/notejam/templates/_helpers.html
+++ /dev/null
@@ -1,11 +0,0 @@
-{% macro render_field(field) %}
- {{ field.label }}
- {{ field }}
- {% if field.errors %}
-
- {% for error in field.errors %}
- {{ error }}
- {% endfor %}
-
- {% endif %}
-{% endmacro %}
diff --git a/flask/notejam/templates/base.html b/flask/notejam/templates/base.html
deleted file mode 100644
index 5a061688b..000000000
--- a/flask/notejam/templates/base.html
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-
-
-
-
-
-
-
- {% block title %}Notejam{% endblock %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {% block extrahead %}{% endblock %}
-
-
-
-
-
-
-
- {% block pads %}
-
-
My pads
-
-
- {% if pads %}
-
- {% else %}
- No pads
- {% endif %}
-
- New pad
-
-
-
- {% endblock %}
-
- {% with messages = get_flashed_messages(with_categories=true) %}
- {% if messages %}
-
- {% for category, message in messages %}
- {{ message }}
- {% endfor %}
-
- {% endif %}
- {% endwith %}
- {% block content %}
- {% endblock %}
-
-
-
-
-
-
-
-
diff --git a/flask/notejam/templates/notes/create.html b/flask/notejam/templates/notes/create.html
deleted file mode 100644
index 2a83b0914..000000000
--- a/flask/notejam/templates/notes/create.html
+++ /dev/null
@@ -1,10 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}New note{% endblock %}
-{% block page_title %}New note {% endblock %}
-
-{% block content %}
- {% include "notes/form.html" %}
-{% endblock %}
-
-
diff --git a/flask/notejam/templates/notes/delete.html b/flask/notejam/templates/notes/delete.html
deleted file mode 100644
index c52cf550f..000000000
--- a/flask/notejam/templates/notes/delete.html
+++ /dev/null
@@ -1,13 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}{{ note.name }}{% endblock %}
-{% block page_title %}{{ note.name }} {% endblock %}
-
-{% block content %}
- Are you sure you want to delete {{ note.name }}?
-
-{% endblock %}
diff --git a/flask/notejam/templates/notes/edit.html b/flask/notejam/templates/notes/edit.html
deleted file mode 100644
index 292ce8f97..000000000
--- a/flask/notejam/templates/notes/edit.html
+++ /dev/null
@@ -1,11 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}{{ form.name.data }}{% endblock %}
-{% block page_title %}{{ form.name.data }} {% endblock %}
-
-{% block content %}
- {% include "notes/form.html" %}
-{% endblock %}
-
-
-
diff --git a/flask/notejam/templates/notes/form.html b/flask/notejam/templates/notes/form.html
deleted file mode 100644
index b83c5f9e7..000000000
--- a/flask/notejam/templates/notes/form.html
+++ /dev/null
@@ -1,10 +0,0 @@
-{% from "_helpers.html" import render_field %}
-
-
-
diff --git a/flask/notejam/templates/notes/list.html b/flask/notejam/templates/notes/list.html
deleted file mode 100644
index fffc9f61f..000000000
--- a/flask/notejam/templates/notes/list.html
+++ /dev/null
@@ -1,34 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}All notes ({{ notes|length }}){% endblock %}
-{% block page_title %} All notes ({{ notes|length }}) {% endblock %}
-
-{% block content %}
- {% if notes %}
-
-
- Note ↓ ↑
- Pad
- Last modified ↓ ↑
-
- {% for note in notes %}
-
- {{ note.name }}
-
- {% if note.pad %}
- {{ note.pad.name }}
- {% else %}
- No pad
- {% endif %}
-
- {{ note.updated_at|smart_date }}
-
- {% endfor %}
-
- {% else %}
- Create your first note.
- {% endif %}
- New note
-{% endblock %}
-
-
diff --git a/flask/notejam/templates/notes/view.html b/flask/notejam/templates/notes/view.html
deleted file mode 100644
index f73a5fe81..000000000
--- a/flask/notejam/templates/notes/view.html
+++ /dev/null
@@ -1,14 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}{{ note.name }}{% endblock %}
-{% block page_title %}{{ note.name }} {% endblock %}
-
-{% block content %}
- Last edited at {{ note.updated_at|smart_date }}
-
- {{ note.text }}
-
- Edit
- Delete it
-{% endblock %}
-
diff --git a/flask/notejam/templates/pads/create.html b/flask/notejam/templates/pads/create.html
deleted file mode 100644
index e43ed38b1..000000000
--- a/flask/notejam/templates/pads/create.html
+++ /dev/null
@@ -1,11 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}New pad{% endblock %}
-{% block page_title %}New pad {% endblock %}
-
-{% block content %}
- {% include "pads/form.html" %}
-{% endblock %}
-
-
-
diff --git a/flask/notejam/templates/pads/delete.html b/flask/notejam/templates/pads/delete.html
deleted file mode 100644
index d93d979b7..000000000
--- a/flask/notejam/templates/pads/delete.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}{{ pad.name }}{% endblock %}
-{% block page_title %}{{ pad.name }} {% endblock %}
-
-{% block content %}
- Are you sure you want to delete {{ pad.name }}?
-
-{% endblock %}
-
-
-
-
diff --git a/flask/notejam/templates/pads/edit.html b/flask/notejam/templates/pads/edit.html
deleted file mode 100644
index 56b30dddd..000000000
--- a/flask/notejam/templates/pads/edit.html
+++ /dev/null
@@ -1,13 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}{{ pad.name }}{% endblock %}
-{% block page_title %}{{ pad.name }} {% endblock %}
-
-{% block content %}
- {% include "pads/form.html" %}
- Delete pad
-{% endblock %}
-
-
-
-
diff --git a/flask/notejam/templates/pads/form.html b/flask/notejam/templates/pads/form.html
deleted file mode 100644
index d6895e3bc..000000000
--- a/flask/notejam/templates/pads/form.html
+++ /dev/null
@@ -1,9 +0,0 @@
-{% from "_helpers.html" import render_field %}
-
-
-
-
diff --git a/flask/notejam/templates/pads/note_list.html b/flask/notejam/templates/pads/note_list.html
deleted file mode 100644
index 31bd5fb41..000000000
--- a/flask/notejam/templates/pads/note_list.html
+++ /dev/null
@@ -1,26 +0,0 @@
-{% extends "base.html" %}
-
-{% block title %}{{ pad.name }} ({{ pad.notes.count() }}){% endblock %}
-{% block page_title %}{{ pad.name }} ({{ pad.notes.count() }}) {% endblock %}
-
-{% block content %}
- {% if notes %}
-
-
- Note
- ↓ ↑
- Last modified ↓ ↑
-
- {% for note in notes %}
-
- {{ note.name }}
- {{ note.updated_at|smart_date }}
-
- {% endfor %}
-
- {% else %}
- Create first note in the pad.
- {% endif %}
- New note
- Pad settings
-{% endblock %}
diff --git a/flask/notejam/templates/user.html b/flask/notejam/templates/user.html
deleted file mode 100644
index 8e556e310..000000000
--- a/flask/notejam/templates/user.html
+++ /dev/null
@@ -1,4 +0,0 @@
-{% extends "base.html" %}
-
-{% block pads %}{% endblock %}
-{% block content_class %}sixteen columns content-area{% endblock %}
diff --git a/flask/notejam/templates/users/forgot_password.html b/flask/notejam/templates/users/forgot_password.html
deleted file mode 100644
index 0635ad68a..000000000
--- a/flask/notejam/templates/users/forgot_password.html
+++ /dev/null
@@ -1,14 +0,0 @@
-{% extends "user.html" %}
-{% from "_helpers.html" import render_field %}
-
-{% block title %}Forgot Password?{% endblock %}
-{% block page_title %}Forgot Password? {% endblock %}
-
-{% block content %}
-
-{% endblock %}
-
diff --git a/flask/notejam/templates/users/settings.html b/flask/notejam/templates/users/settings.html
deleted file mode 100644
index 0de132d2f..000000000
--- a/flask/notejam/templates/users/settings.html
+++ /dev/null
@@ -1,16 +0,0 @@
-{% extends "user.html" %}
-{% from "_helpers.html" import render_field %}
-
-{% block title %}Account Settings{% endblock %}
-{% block page_title %}Account Settings {% endblock %}
-
-{% block content %}
-
-{% endblock %}
-
diff --git a/flask/notejam/templates/users/signin.html b/flask/notejam/templates/users/signin.html
deleted file mode 100644
index 58c5e494c..000000000
--- a/flask/notejam/templates/users/signin.html
+++ /dev/null
@@ -1,16 +0,0 @@
-{% extends "user.html" %}
-{% from "_helpers.html" import render_field %}
-
-{% block title %}Sign In{% endblock %}
-{% block page_title %}Sign In {% endblock %}
-
-{% block content %}
-
-{% endblock %}
diff --git a/flask/notejam/templates/users/signup.html b/flask/notejam/templates/users/signup.html
deleted file mode 100644
index 19ae825ac..000000000
--- a/flask/notejam/templates/users/signup.html
+++ /dev/null
@@ -1,16 +0,0 @@
-{% extends "user.html" %}
-{% from "_helpers.html" import render_field %}
-
-{% block title %}Sign Up{% endblock %}
-{% block page_title %}Sign Up {% endblock %}
-
-{% block content %}
-
-{% endblock %}
-
diff --git a/flask/notejam/views.py b/flask/notejam/views.py
deleted file mode 100644
index 0064053b8..000000000
--- a/flask/notejam/views.py
+++ /dev/null
@@ -1,264 +0,0 @@
-from datetime import date
-import hashlib
-
-from flask import render_template, flash, request, redirect, url_for, abort
-from flask_login import (login_user, login_required, logout_user,
-current_user)
-from flask_mail import Message
-
-from notejam import app, db, login_manager, mail
-from notejam.models import User, Note, Pad
-from notejam.forms import (SigninForm, SignupForm, NoteForm, PadForm,
-DeleteForm, ChangePasswordForm, ForgotPasswordForm)
-
-
-@login_manager.user_loader
-def load_user(user_id):
- return User.query.get(user_id)
-
-
-@app.route('/')
-@login_required
-def home():
- notes = (Note.query
- .filter_by(user=current_user)
- .order_by(_get_order_by(request.args.get('order')))
- .all())
- return render_template('notes/list.html', notes=notes)
-
-
-@app.route('/notes/create/', methods=['GET', 'POST'])
-@login_required
-def create_note():
- note_form = NoteForm(user=current_user, pad=request.args.get('pad'))
- if note_form.validate_on_submit():
- note = Note(
- name=note_form.name.data,
- text=note_form.text.data,
- pad_id=note_form.pad.data,
- user=current_user
- )
- db.session.add(note)
- db.session.commit()
- flash('Note is successfully created', 'success')
- return redirect(_get_note_success_url(note))
- return render_template('notes/create.html', form=note_form)
-
-
-@app.route('/notes//edit/', methods=['GET', 'POST'])
-@login_required
-def edit_note(note_id):
- note = _get_user_object_or_404(Note, note_id, current_user)
- note_form = NoteForm(user=current_user, obj=note)
- if note_form.validate_on_submit():
- note.name = note_form.name.data
- note.text = note_form.text.data
- note.pad_id = note_form.pad.data
-
- db.session.commit()
- flash('Note is successfully updated', 'success')
- return redirect(_get_note_success_url(note))
- if note.pad:
- note_form.pad.data = note.pad.id # XXX ?
- return render_template('notes/edit.html', form=note_form)
-
-
-@app.route('/notes//')
-@login_required
-def view_note(note_id):
- note = _get_user_object_or_404(Note, note_id, current_user)
- return render_template('notes/view.html', note=note)
-
-
-@app.route('/notes//delete/', methods=['GET', 'POST'])
-@login_required
-def delete_note(note_id):
- note = _get_user_object_or_404(Note, note_id, current_user)
- delete_form = DeleteForm()
- if request.method == 'POST':
- db.session.delete(note)
- db.session.commit()
- flash('Note is successfully deleted', 'success')
- return redirect(url_for('home'))
- return render_template('notes/delete.html', note=note, form=delete_form)
-
-
-@app.route('/pads/create/', methods=['GET', 'POST'])
-@login_required
-def create_pad():
- pad_form = PadForm()
- if pad_form.validate_on_submit():
- pad = Pad(
- name=pad_form.name.data,
- user=current_user
- )
- db.session.add(pad)
- db.session.commit()
- flash('Pad is successfully created', 'success')
- return redirect(url_for('home'))
- return render_template('pads/create.html', form=pad_form)
-
-
-@app.route('/pads//edit/', methods=['GET', 'POST'])
-@login_required
-def edit_pad(pad_id):
- pad = _get_user_object_or_404(Pad, pad_id, current_user)
- pad_form = PadForm(obj=pad)
- if pad_form.validate_on_submit():
- pad.name = pad_form.name.data
- db.session.commit()
- flash('Pad is successfully updated', 'success')
- return redirect(url_for('pad_notes', pad_id=pad.id))
- return render_template('pads/edit.html', form=pad_form, pad=pad)
-
-
-@app.route('/pads//')
-@login_required
-def pad_notes(pad_id):
- pad = _get_user_object_or_404(Pad, pad_id, current_user)
- notes = (Note.query
- .filter_by(user=current_user, pad=pad)
- .order_by(_get_order_by(request.args.get('order')))
- .all())
- return render_template('pads/note_list.html', pad=pad, notes=notes)
-
-
-@app.route('/pads//delete/', methods=['GET', 'POST'])
-@login_required
-def delete_pad(pad_id):
- pad = _get_user_object_or_404(Pad, pad_id, current_user)
- delete_form = DeleteForm()
- if request.method == 'POST':
- db.session.delete(pad)
- db.session.commit()
- flash('Note is successfully deleted', 'success')
- return redirect(url_for('home'))
- return render_template('pads/delete.html', pad=pad, form=delete_form)
-
-
-# @TODO use macro for form fields in template
-@app.route('/signin/', methods=['GET', 'POST'])
-def signin():
- form = SigninForm()
- if form.validate_on_submit():
- auth_user = User.authenticate(form.email.data, form.password.data)
- if auth_user:
- login_user(auth_user)
- flash('You are signed in!', 'success')
- return redirect(url_for('home'))
- else:
- flash('Wrong email or password', 'error')
- return render_template('users/signin.html', form=form)
-
-
-@app.route('/signout/')
-def signout():
- logout_user()
- return redirect(url_for('signin'))
-
-
-@app.route('/signup/', methods=['GET', 'POST'])
-def signup():
- form = SignupForm()
- if form.validate_on_submit():
- user = User(email=form.email.data)
- user.set_password(form.password.data)
- db.session.add(user)
- db.session.commit()
- flash('Account is created. Now you can sign in.', 'success')
- return redirect(url_for('signin'))
- return render_template('users/signup.html', form=form)
-
-
-@app.route('/settings/', methods=['GET', 'POST'])
-@login_required
-def account_settings():
- form = ChangePasswordForm(user=current_user)
- if form.validate_on_submit():
- current_user.set_password(form.new_password.data)
- db.session.commit()
- flash("Your password is successfully changed.", 'success')
- return redirect(url_for('home'))
- return render_template('users/settings.html', form=form)
-
-
-@app.route('/forgot-password/', methods=['GET', 'POST'])
-def forgot_password():
- form = ForgotPasswordForm()
- if form.validate_on_submit():
- user = User.query.filter_by(email=form.email.data).first()
- new_password = _generate_password(user)
- user.set_password(new_password)
-
- message = Message(
- subject="Notejam password",
- body="Your new password is {}".format(new_password),
- sender="from@notejamapp.com",
- recipients=[user.email]
- )
- mail.send(message)
-
- db.session.commit()
- flash("Find new password in your inbox", 'success')
- return redirect(url_for('home'))
- return render_template('users/forgot_password.html', form=form)
-
-
-# context processors and filters
-@app.context_processor
-def inject_user_pads():
- ''' inject list of user pads in template context '''
- if not current_user.is_anonymous:
- return dict(pads=current_user.pads.all())
- return dict(pads=[])
-
-
-@app.template_filter('smart_date')
-def smart_date_filter(updated_at):
- delta = date.today() - updated_at.date()
- if delta.days == 0:
- return 'Today at {}'.format(updated_at.strftime("%H:%M"))
- elif delta.days == 1:
- return 'Yesterday at {}'.format(updated_at.strftime("%H:%M"))
- elif 1 > delta.days > 4:
- return '{} days ago'.format(abs(delta.days))
- else:
- return updated_at.date()
-
-
-# helper functions, @TODO move to helpers.py?
-def _get_note_success_url(note):
- ''' get note success redirect url depends on note's pad '''
- if note.pad is None:
- return url_for('home')
- else:
- return url_for('pad_notes', pad_id=note.pad.id)
-
-
-def _get_user_object_or_404(model, object_id, user, code=404):
- ''' get an object by id and owner user or raise an abort '''
- result = model.query.filter_by(id=object_id, user=user).first()
- return result or abort(code)
-
-
-def _get_order_by(param='-updated_at'):
- ''' get model order param by string description '''
- return {
- 'name': Note.name.asc(),
- '-name': Note.name.desc(),
- 'updated_at': Note.updated_at.asc(),
- '-updated_at': Note.updated_at.desc(),
- }.get(param, Note.updated_at.desc())
-
-
-def _generate_password(user):
- ''' generate new user password '''
- m = hashlib.md5()
- m.update(
- "{email}{secret}{date}".format(
- email=user.email,
- secret=app.secret_key,
- date=str(date.today())
- )
- )
- return m.hexdigest()[:8]
diff --git a/flask/notejam/wsgi.py b/flask/notejam/wsgi.py
deleted file mode 100644
index 83370f350..000000000
--- a/flask/notejam/wsgi.py
+++ /dev/null
@@ -1,7 +0,0 @@
-from notejam import app as application
-from notejam.config import DevelopmentConfig
-
-application.config.from_object(DevelopmentConfig)
-
-if __name__ == '__main__':
- application.run()
diff --git a/flask/requirements.txt b/flask/requirements.txt
deleted file mode 100644
index 55908cf95..000000000
--- a/flask/requirements.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-Flask==1.1.1
-Flask-Login==0.4.1
-Flask-Mail==0.9.1
-Flask-SQLAlchemy==2.4.1
-Flask-Testing==0.6.1
-Flask-WTF==0.14.2
-Jinja2==2.10.3
-SQLAlchemy==1.3.10
-Tempita==0.5.2
-WTForms==2.2.1
-Werkzeug==0.16.0
-blinker==1.4
-decorator==4.4.1
-ipython==5.8.0
-sqlalchemy-migrate==0.13.0
diff --git a/flask/runserver.py b/flask/runserver.py
deleted file mode 100755
index 6cb3c5663..000000000
--- a/flask/runserver.py
+++ /dev/null
@@ -1,7 +0,0 @@
-from notejam import app
-from notejam.config import DevelopmentConfig
-
-app.config.from_object(DevelopmentConfig)
-
-if __name__ == '__main__':
- app.run()
diff --git a/flask/tests.py b/flask/tests.py
deleted file mode 100644
index b5fcf6aef..000000000
--- a/flask/tests.py
+++ /dev/null
@@ -1,336 +0,0 @@
-import os
-import tempfile
-import unittest
-import urllib.parse
-
-from contextlib import contextmanager
-
-from flask import url_for
-from flask_testing import TestCase
-
-from notejam import app, db
-from notejam.config import TestingConfig
-from notejam.models import User, Pad, Note
-
-app.config.from_object(TestingConfig)
-
-
-class NotejamBaseTestCase(TestCase):
- def setUp(self):
- db.create_all()
-
- def tearDown(self):
- db.session.remove()
- db.drop_all()
- os.close(self.fd)
- os.unlink(self.db)
-
- def create_app(self):
- self.fd, self.db = tempfile.mkstemp()
- test_app = app
- test_app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///" + self.db
- test_app.config['TESTING'] = True
- test_app.config['CSRF_ENABLED'] = False
- return test_app
-
- def create_user(self, **kwargs):
- user = User(email=kwargs['email'])
- user.set_password(kwargs['password'])
- db.session.add(user)
- db.session.commit()
- return user
-
- def create_pad(self, **kwargs):
- pad = Pad(**kwargs)
- db.session.add(pad)
- db.session.commit()
- return pad
-
- def create_note(self, **kwargs):
- note = Note(**kwargs)
- db.session.add(note)
- db.session.commit()
- return note
-
-
-class SignupTestCase(NotejamBaseTestCase):
- def _get_user_data(self, **kwargs):
- user_data = {
- 'email': 'email@example.com',
- 'password': 'secure_password',
- 'repeat_password': 'secure_password'
- }
- user_data.update(**kwargs)
- return user_data
-
- def test_signup_success(self):
- response = self.client.post(
- url_for("signup"), data=self._get_user_data())
- self.assertRedirects(response, url_for('signin'))
- self.assertEqual(1, User.query.count())
-
- def test_signup_fail_required_fields(self):
- self.client.post(url_for("signup"), data={})
- self.assertEqual(
- set(self._get_user_data().keys()),
- set(self.get_context_variable('form').errors.keys())
- )
-
- def test_signup_fail_email_exists(self):
- data = self._get_user_data()
- self.create_user(**data)
-
- self.client.post(url_for("signup"), data=self._get_user_data())
- self.assertEqual(
- ['email'], list(self.get_context_variable('form').errors.keys()))
-
- def test_signup_fail_invalid_email(self):
- data = self._get_user_data()
- data['email'] = 'invalid email'
-
- self.client.post(url_for("signup"), data=data)
- self.assertEqual(
- ['email'], list(self.get_context_variable('form').errors.keys()))
-
- def test_signup_fail_passwords_dont_match(self):
- invalid_data = self._get_user_data(password='another pass')
- self.client.post(url_for('signup'), data=invalid_data)
- self.assertEqual(
- ['repeat_password'],
- list(self.get_context_variable('form').errors.keys())
- )
-
-
-class SigninTestCase(NotejamBaseTestCase):
- def _get_user_data(self, **kwargs):
- user_data = {
- 'email': 'email@example.com',
- 'password': 'secure_password'
- }
- user_data.update(**kwargs)
- return user_data
-
- def test_signin_success(self):
- data = self._get_user_data()
- self.create_user(**data)
-
- response = self.client.post(url_for('signin'), data=data)
- self.assertRedirects(response, url_for('home'))
-
- def test_signin_fail(self):
- response = self.client.post(
- url_for('signin'), data=self._get_user_data())
- self.assertIn('Wrong email or password', str(response.data))
-
- def test_signin_fail_required_fields(self):
- self.client.post(url_for("signin"), data={})
- self.assertEqual(
- set(self._get_user_data().keys()),
- set(self.get_context_variable('form').errors.keys())
- )
-
- def test_signup_fail_invalid_email(self):
- data = self._get_user_data()
- data['email'] = 'invalid email'
-
- self.client.post(url_for("signin"), data=data)
- self.assertEqual(
- ['email'], list(self.get_context_variable('form').errors.keys()))
-
-
-class PadTestCase(NotejamBaseTestCase):
-
- def test_create_success(self):
- user = self.create_user(email='email@example.com', password='password')
- with signed_in_user(user) as c:
- response = c.post(url_for('create_pad'), data={'name': 'pad'})
- self.assertRedirects(response, '/')
- self.assertEqual(1, Pad.query.count())
-
- def test_create_fail_required_name(self):
- user = self.create_user(email='email@example.com', password='password')
- with signed_in_user(user) as c:
- c.post(url_for('create_pad'), data={})
- self.assertEqual(
- ['name'], list(self.get_context_variable('form').errors.keys()))
-
- def test_create_fail_anonymous_user(self):
- response = self.client.post(
- url_for('create_pad'), data={'name': 'pad'})
- self.assertRedirects(
- response,
- "{signin}?next={redirect_to}".format(
- signin=url_for('signin'), redirect_to=urllib.parse.quote(
- url_for('create_pad'), ''))
- )
-
- def test_edit_success(self):
- user = self.create_user(email='email@example.com', password='password')
- pad = self.create_pad(name='pad', user=user)
- with signed_in_user(user) as c:
- new_name = 'new pad name'
- response = c.post(
- url_for('edit_pad', pad_id=pad.id), data={'name': new_name})
- self.assertRedirects(response, url_for('pad_notes', pad_id=pad.id))
- self.assertEqual(new_name, Pad.query.get(pad.id).name)
-
- def test_edit_fail_required_name(self):
- user = self.create_user(email='email@example.com', password='password')
- pad = self.create_pad(name='pad', user=user)
- with signed_in_user(user) as c:
- c.post(url_for('edit_pad', pad_id=pad.id), data={'name': ''})
- self.assertEqual(
- ['name'], list(self.get_context_variable('form').errors.keys()))
-
- def test_edit_fail_anothers_user(self):
- user = self.create_user(email='email@example.com', password='password')
- pad = self.create_pad(name='pad', user=user)
- another_user = self.create_user(
- email='another@example.com', password='password')
- with signed_in_user(another_user) as c:
- new_name = 'new pad name'
- response = c.post(
- url_for('edit_pad', pad_id=pad.id), data={'name': new_name})
- self.assertEqual(404, response.status_code)
-
- def test_delete_success(self):
- user = self.create_user(email='email@example.com', password='password')
- pad = self.create_pad(name='pad', user=user)
- with signed_in_user(user) as c:
- response = c.post(
- url_for('delete_pad', pad_id=pad.id))
- self.assertRedirects(response, url_for('home'))
- self.assertEqual(0, Pad.query.count())
-
- def test_delete_fail_anothers_user(self):
- user = self.create_user(email='email@example.com', password='password')
- pad = self.create_pad(name='pad', user=user)
- another_user = self.create_user(
- email='another@example.com', password='password')
- with signed_in_user(another_user) as c:
- response = c.post(
- url_for('delete_pad', pad_id=pad.id))
- self.assertEqual(404, response.status_code)
-
-
-class NoteTestCase(NotejamBaseTestCase):
- def _get_note_data(self, **kwargs):
- note_data = {
- 'name': 'note', 'pad': 0, 'text': 'text'
- }
- note_data.update(**kwargs)
- return note_data
-
- def test_create_success(self):
- user = self.create_user(email='email@example.com', password='password')
- with signed_in_user(user) as c:
- response = c.post(
- url_for('create_note'), data=self._get_note_data())
- self.assertRedirects(response, '/')
- self.assertEqual(1, Note.query.count())
-
- def test_create_fail_required_fields(self):
- user = self.create_user(email='email@example.com', password='password')
- with signed_in_user(user) as c:
- c.post(url_for('create_note'), data={})
- self.assertEqual(
- set(self._get_note_data().keys()),
- set(self.get_context_variable('form').errors.keys())
- )
-
- def test_create_fail_anothers_pad(self):
- user = self.create_user(email='email@example.com', password='password')
- another_user = self.create_user(
- email='another@example.com', password='password')
- pad = self.create_pad(name='pad', user=another_user)
- with signed_in_user(user) as c:
- c.post(
- url_for('create_note'), data=self._get_note_data(pad=pad.id))
- self.assertEqual(
- ['pad'], list(self.get_context_variable('form').errors.keys())
- )
-
- def test_create_fail_anonymous_user(self):
- response = self.client.post(
- url_for('create_note'), data=self._get_note_data())
- self.assertRedirects(
- response,
- "{signin}?next={redirect_to}".format(
- signin=url_for('signin'), redirect_to=urllib.parse.quote(
- url_for('create_note'), ''))
- )
-
- def test_edit_success(self):
- user = self.create_user(email='email@example.com', password='password')
- note_data = {'name': 'note', 'text': 'text', 'user': user}
- note = self.create_note(**note_data)
- with signed_in_user(user) as c:
- new_name = 'new pad name'
- c.post(
- url_for('edit_note', note_id=note.id),
- data=self._get_note_data(name=new_name)
- )
- self.assertEqual(new_name, Note.query.get(note.id).name)
-
- def test_edit_fail_required_fields(self):
- user = self.create_user(email='email@example.com', password='password')
- note_data = {'name': 'note', 'text': 'text', 'user': user}
- note = self.create_note(**note_data)
- with signed_in_user(user) as c:
- c.post(
- url_for('edit_note', note_id=note.id),
- data={'pad': '', 'name': '', 'text': ''}
- )
- self.assertEqual(
- set(self._get_note_data().keys()),
- set(self.get_context_variable('form').errors.keys())
- )
-
- def test_edit_fail_anothers_user(self):
- user = self.create_user(email='email@example.com', password='password')
- note_data = {'name': 'note', 'text': 'text', 'user': user}
- note = self.create_note(**note_data)
- another_user = self.create_user(
- email='another@example.com', password='password')
- with signed_in_user(another_user) as c:
- response = c.post(
- url_for('edit_note', note_id=note.id), data={})
- self.assertEqual(404, response.status_code)
-
- def test_delete_success(self):
- user = self.create_user(email='email@example.com', password='password')
- note = self.create_note(name='note', text='text', user=user)
- with signed_in_user(user) as c:
- response = c.post(
- url_for('delete_note', note_id=note.id))
- self.assertRedirects(response, url_for('home'))
- self.assertEqual(0, Note.query.count())
-
- def test_delete_fail_anothers_user(self):
- user = self.create_user(email='email@example.com', password='password')
- note = self.create_note(name='note', text='text', user=user)
- another_user = self.create_user(
- email='another@example.com', password='password')
- with signed_in_user(another_user) as c:
- response = c.post(
- url_for('delete_note', note_id=note.id))
- self.assertEqual(404, response.status_code)
-
-
-@contextmanager
-def signed_in_user(user):
- '''
- Signed in user context
- Usage:
- user = get_user()
- with signed_in_user(user) as c:
- response = c.get(...)
- '''
- with app.test_client() as c:
- with c.session_transaction() as sess:
- sess['user_id'] = user.id
- sess['_fresh'] = True
- yield c
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/html/account-settings.html b/html/account-settings.html
deleted file mode 100644
index f4c90b375..000000000
--- a/html/account-settings.html
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
-
-
-
-
-
-
- Notejam: Account Settings
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/html/alerts-and-errors.html b/html/alerts-and-errors.html
deleted file mode 100644
index ffd621420..000000000
--- a/html/alerts-and-errors.html
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
-
-
-
-
-
-
- Notejam: Alerts and errors
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Everything is OK
-
Something is wrong
-
-
-
-
-
-
-
-
-
diff --git a/html/create-pad.html b/html/create-pad.html
deleted file mode 100644
index 431ea2a9d..000000000
--- a/html/create-pad.html
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
-
-
-
-
-
-
- Notejam: New pad
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/html/create.html b/html/create.html
deleted file mode 100644
index 71ed1af73..000000000
--- a/html/create.html
+++ /dev/null
@@ -1,80 +0,0 @@
-
-
-
-
-
-
-
-
-
- Notejam: New note
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/html/css/style.css b/html/css/style.css
deleted file mode 100644
index 76326fc39..000000000
--- a/html/css/style.css
+++ /dev/null
@@ -1,400 +0,0 @@
-/*
-* Skeleton V1.0.3
-* Copyright 2011, Dave Gamache
-* www.getskeleton.com
-* Free to use under the MIT license.
-* http://www.opensource.org/licenses/mit-license.php
-* 7/17/2011
-*/
-
-
-/* Documentation Styles
-================================================== */
- div.container {
- padding-top: 40px; }
-
- /* Doc nav */
- nav {
- width: 160px; }
- #logo, .bold-header {
- margin-bottom: 30px;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- letter-spacing: -1px;
- color: #555;
- font-weight: bold; }
- .bold-header span {
- font-weight: normal;
- font-size: 23px;
- }
- .bold-header a.header {
- text-decoration: none;
- color: inherit;
- }
- .bold-header span.jam {
- font-size: 46px;
- line-height: 50px;
- }
- nav ul {
- float: left; }
- nav ul li {
- display: block;
- margin-bottom: 10px; }
- nav ul li a,
- nav ul li a:visited,
- nav ul li a:active {
- font-size: 14px;
- color: #555;
- text-decoration: none;
- font-weight: bold; }
- nav ul li a:hover,
- nav ul li a:focus {
- color: #222; }
- header h1 {
- font-size: 52px;
- line-height: 61px;
- letter-spacing: -1px;
- font-weight: normal;
- font-family: "Georgia", "Times New Roman", Helvetica, Arial, sans-serif; }
- hr.large {
- border: none;
- height: 8px;
- background: #ebebeb;
- margin: 50px 0; }
- div.doc-section {
- margin: 30px 0; }
-
- #whatAndWhy .row {
- padding: 30px 0 0; }
-
- #typography blockquote {
- margin-top: 20px; }
-
- .hidden-code a {
- font-size: 12px;
- color: #999; }
- .hidden-code>div {
- display: none; }
-
-
- /* Grid */
- #grid .column,
- #grid .columns {
- background: #ddd;
- height: 25px;
- line-height: 25px;
- margin-bottom: 10px;
- text-align: center;
- text-transform: uppercase;
- color: #555;
- font-size: 12px;
- font-weight: bold;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px; }
- #grid .column:hover,
- #grid .columns:hover {
- background: #bbb;
- color: #333; }
- #grid .example-grid { overflow: hidden; }
-
- .post-button-note,
- .post-button-note a {
- font-size: 11px;
- color: #999; }
-
- #examples .four.columns a {
- text-decoration: none;
- }
- #examples .four.columns a:hover {
- text-decoration: underline;
- }
-
-
- .resize {
- position: fixed;
- bottom: 0;
- right: 0;
- height: 80px;
- width: 80px;
- background: url(images/resize.png); }
-
-
- img {
- max-width: 100%;
- height: auto; }
-
- .gist-meta { display: none !important;}
-
- ul ul ul li { margin-bottom: 3px; }
-
- .twitter-share-button { margin-bottom: -18px; }
-
- /* Table stylesheets */
- table {
- width: 100%;
- border-collapse: collapse;
- }
-
- table th, table td {
- padding: 10px 10px 9px;
- font-size: 13px;
- line-height: 18px;
- text-align: left;
- }
-
- table td {
- vertical-align: top;
- border-top: solid 1px #ddd;
- }
-
- table th {
- padding-top: 9px;
- font-weight: bold;
- vertical-align: middle;
- }
-
- table.condensed th, table.condensed td {
- padding: 5px 5px 4px;
- }
-
- table.bordered {
- border-collapse: separate;
- border: solid 1px #ddd;
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
- }
-
- table.bordered th + th,
- table.bordered th + td,
- table.bordered td + td {
- border-left: solid 1px #ddd;
- }
-
- .zebra-striped tbody tr:nth-child(odd) td,
- .zebra-striped tbody tr:nth-child(odd) th {
- background: #f5f5f5;
- }
-
-.carbonad,
-.carbonad-image,
-.carbonad-text,
-.carbonad-tag {
- background: none !important;
- border: none !important;
- margin-left: 0 !important;
-}
-.carbonad-tag {
- margin-top: 6px !important;
- padding-top: 0 !important;
-}
-.carbonad-text {
- height: auto !important;
-}
-.carbonad-image {
- margin-top: 0 !important;
-}
-
-.hidden-text {
- font-size: 12px;
- color: #999;
-}
-
-td.date, th.date {
- text-align: right;
-}
-
-td.date {
- font-style: italic;
-}
-
-form.note input[type="text"], form.note textarea {
- width: 100%;
-}
-
-form hr {
- width: 218px;
- margin: 10px 0px;
-}
-
-form.note textarea {
- height: 250px;
-}
-
-div.content-area {
- min-height: 600px;
-}
-
-hr.footer {
- margin-bottom: 10px;
-}
-
-div.footer {
- margin-bottom: 10px;
- text-align: center;
- font-size: 12px;
-}
-
-form.sign-in {
- margin: 50px 0 0 0;
-}
-
-.sort_arrow {
- text-decoration: none;
-}
-
-.sort_arrow:hover {
- text-decoration: none;
- color: red;
-}
-
-div.sign-in-out-block {
- position: absolute;
- right: 14px;
- top: 8px;
- font-size: 12px;
-}
-
-div.sign-in-out-block a {
- /*text-decoration: none;*/
-}
-
-a.small-red {
- color: red;
- font-size: 12px;
-}
-
-table.notes {
- margin: 0 0 20px 0;
-}
-
-table.notes th.note {
- width: 72%;
-}
-
-table.notes td.pad {
- color: grey;
-}
-
-table.notes td.pad a {
- color: grey;
- text-decoration: underline;
- font-style: normal;
-}
-
-
-table.notes td.pad a:hover {
- color: black;
-}
-
-p.empty {
- color: grey;
- font-style: italic;
-}
-
-a.delete-note {
- float: right;
- font-size: 12px;
- color: red;
-}
-
-.red, input.red {
- color: red !important;
-}
-
-ul.errorlist, ul.errors {
- margin: -18px 0 0 0;
-}
-
-ul.errorlist li, ul.errors li {
- color: red;
-}
-
-.alert-area {
- text-align: center;
-}
-
-.alert {
- padding: 5px 8px;
- margin: 0 0 12px 0;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
-}
-
-.alert-success {
- color: #468847;
- background-color: #dff0d8;
- border: 1px solid #d6e9c6;
-}
-
-.alert-error {
- color: #b94a48;
- background-color: #f2dede;
- border: 1px solid #eed3d7;
-}
-
-.pagination {
- text-align: center;
-}
-
- /* Mobile */
- @media only screen and (max-width: 767px) {
- header h1 { font-size: 34px; line-height: 37px; }
- nav { position: relative; }
- nav ul,
- .carbonad {
- display: none;
- }
- #logo { text-align: left; }
- #examples .four.columns {
- padding-top: 30px;
- }
- }
-
- /* Mobile Landscape */
- @media only screen and (min-width: 480px) and (max-width: 767px) {
- nav ul {
- display: none;
- }
- }
-
- /* Non 960 */
- @media only screen and (max-width: 959px) {
- #logo {
- font-size: 21px;
- margin-bottom: 15px; }
- nav .button {
- padding: 9px 20px 11px; }
- }
-
- /* iPad Portrait/Browser */
- @media only screen and (min-width: 768px) and (max-width: 959px) {
- nav {
- width: 124px; }
- }
-
- /* Mobile/Browser */
- @media only screen and (max-width: 767px) {}
-
- /* Mobile Landscape/Browser */
- @media only screen and (min-width: 480px) and (max-width: 767px) {}
-
- /* Anything smaller than standard 960 */
- @media only screen and (max-width: 959px) {}
-
-
- /* iPad Portrait Only */
- @media only screen and (min-width: 768px) and (max-width: 959px) and (max-device-width: 1000px) {}
-
- /* Mobile Only */
- @media only screen and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Mobile Landscape Only */
- @media only screen and (min-width: 480px) and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Anything smaller than standard 960 on a device */
- @media only screen and (max-width: 959px) and (max-device-width: 1000px) {
- .resize { display: none; }
- }
-
diff --git a/html/delete.html b/html/delete.html
deleted file mode 100644
index 44a00fbf8..000000000
--- a/html/delete.html
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
-
-
-
-
-
-
- Notejam
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/html/edit.html b/html/edit.html
deleted file mode 100644
index b24216c88..000000000
--- a/html/edit.html
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
-
-
-
-
-
-
- Notejam: My sport
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- Note
- My sport activities
- Select Pad
-
- --------
- Business
- Personal
- Other
-
-
-
-
-
-
-
-
-
-
diff --git a/html/empty-list.html b/html/empty-list.html
deleted file mode 100644
index d522c16e4..000000000
--- a/html/empty-list.html
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
-
-
-
-
-
-
- Notejam
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
My pads
-
- No pads
-
- New pad
-
-
-
-
Create your first note.
-
New note
-
-
-
-
-
-
-
-
diff --git a/html/forgot-password.html b/html/forgot-password.html
deleted file mode 100644
index 95da65c85..000000000
--- a/html/forgot-password.html
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
-
-
-
-
-
-
- Notejam: Forgot password?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Email
-
-
-
-
-
-
-
-
-
-
diff --git a/html/index.html b/html/index.html
deleted file mode 100644
index 821b25f47..000000000
--- a/html/index.html
+++ /dev/null
@@ -1,121 +0,0 @@
-
-
-
-
-
-
-
-
-
- Notejam
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/html/pad-notes.html b/html/pad-notes.html
deleted file mode 100644
index 280cf518b..000000000
--- a/html/pad-notes.html
+++ /dev/null
@@ -1,117 +0,0 @@
-
-
-
-
-
-
-
-
-
- Notejam: Business (8 notes)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/html/screenshots/1.png b/html/screenshots/1.png
deleted file mode 100644
index b927f5e20..000000000
Binary files a/html/screenshots/1.png and /dev/null differ
diff --git a/html/screenshots/1p.png b/html/screenshots/1p.png
deleted file mode 100644
index b200eaf68..000000000
Binary files a/html/screenshots/1p.png and /dev/null differ
diff --git a/html/screenshots/2.png b/html/screenshots/2.png
deleted file mode 100644
index 2edb3d87d..000000000
Binary files a/html/screenshots/2.png and /dev/null differ
diff --git a/html/screenshots/2p.png b/html/screenshots/2p.png
deleted file mode 100644
index 6df1c840f..000000000
Binary files a/html/screenshots/2p.png and /dev/null differ
diff --git a/html/screenshots/3.png b/html/screenshots/3.png
deleted file mode 100644
index d22546010..000000000
Binary files a/html/screenshots/3.png and /dev/null differ
diff --git a/html/screenshots/3p.png b/html/screenshots/3p.png
deleted file mode 100644
index 8882527b5..000000000
Binary files a/html/screenshots/3p.png and /dev/null differ
diff --git a/html/screenshots/4.png b/html/screenshots/4.png
deleted file mode 100644
index 59f37a6a3..000000000
Binary files a/html/screenshots/4.png and /dev/null differ
diff --git a/html/screenshots/5.png b/html/screenshots/5.png
deleted file mode 100644
index 9dad30f93..000000000
Binary files a/html/screenshots/5.png and /dev/null differ
diff --git a/html/screenshots/6.png b/html/screenshots/6.png
deleted file mode 100644
index f98f5e0f9..000000000
Binary files a/html/screenshots/6.png and /dev/null differ
diff --git a/html/signin.html b/html/signin.html
deleted file mode 100644
index d0240a84c..000000000
--- a/html/signin.html
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
- Notejam: Sign In
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/html/signup.html b/html/signup.html
deleted file mode 100644
index 14c3b9e67..000000000
--- a/html/signup.html
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
-
-
-
-
-
-
- Notejam: Sign Up
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/html/view.html b/html/view.html
deleted file mode 100644
index 4990d806b..000000000
--- a/html/view.html
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
-
-
-
-
-
-
- Notejam: My sport
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Last edited at 10:32
-
-
- The typography of Skeleton is designed to create a strong hierarchy with basic styles. The primary font is the classic Helvetica Neue, but the font stack can be easily changed with just a couple adjustments. Regular paragraphs are set at a 14px base with 21px line height.
-
-
- The typography of Skeleton is designed to create a strong hierarchy with basic styles. The primary font is the classic Helvetica Neue, but the font stack can be easily changed with just a couple adjustments. Regular paragraphs are set at a 14px base with 21px line height.
-
-
-
Edit
-
Delete it
-
-
-
-
-
-
-
-
-
-
diff --git a/index.html b/index.html
deleted file mode 100644
index e69de29bb..000000000
diff --git a/laravel/README.rst b/laravel/README.rst
deleted file mode 100644
index f547c6009..000000000
--- a/laravel/README.rst
+++ /dev/null
@@ -1,90 +0,0 @@
-****************
-Notejam: Laravel
-****************
-
-Notejam application implemented using `Laravel `_ framework.
-
-Laravel version: 4.1
-
-
-==========================
-Installation and launching
-==========================
-
------
-Clone
------
-
-Clone the repo:
-
-.. code-block:: bash
-
- $ git clone git@github.com:komarserjio/notejam.git YOUR_PROJECT_DIR/
-
--------
-Install
--------
-
-Install `composer `_
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/laravel/notejam/
- $ curl -s https://getcomposer.org/installer | php
-
-Install dependencies
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/laravel/notejam/
- $ php composer.phar install
-
-Create database schema
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/laravel/notejam/
- $ touch app/database/notejam.db
- $ php artisan migrate
-
-
-------
-Launch
-------
-
-Start laravel web server:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/laravel/notejam/
- $ php artisan serve
-
-Go to http://localhost:8000/ in your browser.
-
----------
-Run tests
----------
-
-Run functional and unit tests:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/laravel/notejam/
- $ php vendor/bin/phpunit
-
-
-
-============
-Contribution
-============
-
-Do you have php/laravel experience? Help the app to follow php and laravel best practices.
-
-Please send your pull requests in the ``master`` branch.
-Always prepend your commits with framework name:
-
-.. code-block:: bash
-
- Laravel: Implemented sign in functionality
-
-Read `contribution guide `_ for details.
diff --git a/laravel/notejam/.gitattributes b/laravel/notejam/.gitattributes
deleted file mode 100644
index 176a458f9..000000000
--- a/laravel/notejam/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-* text=auto
diff --git a/laravel/notejam/.gitignore b/laravel/notejam/.gitignore
deleted file mode 100644
index b5363f020..000000000
--- a/laravel/notejam/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-/bootstrap/compiled.php
-/vendor
-composer.phar
-composer.lock
-.env.*.php
-.env.php
-.DS_Store
-Thumbs.db
diff --git a/laravel/notejam/app/commands/.gitkeep b/laravel/notejam/app/commands/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/laravel/notejam/app/config/app.php b/laravel/notejam/app/config/app.php
deleted file mode 100644
index a63864d83..000000000
--- a/laravel/notejam/app/config/app.php
+++ /dev/null
@@ -1,193 +0,0 @@
- true,
-
- /*
- |--------------------------------------------------------------------------
- | Application URL
- |--------------------------------------------------------------------------
- |
- | This URL is used by the console to properly generate URLs when using
- | the Artisan command line tool. You should set this to the root of
- | your application so that it is used when running Artisan tasks.
- |
- */
-
- 'url' => 'http://localhost',
-
- /*
- |--------------------------------------------------------------------------
- | Application Timezone
- |--------------------------------------------------------------------------
- |
- | Here you may specify the default timezone for your application, which
- | will be used by the PHP date and date-time functions. We have gone
- | ahead and set this to a sensible default for you out of the box.
- |
- */
-
- 'timezone' => 'UTC',
-
- /*
- |--------------------------------------------------------------------------
- | Application Locale Configuration
- |--------------------------------------------------------------------------
- |
- | The application locale determines the default locale that will be used
- | by the translation service provider. You are free to set this value
- | to any of the locales which will be supported by the application.
- |
- */
-
- 'locale' => 'en',
-
- /*
- |--------------------------------------------------------------------------
- | Application Fallback Locale
- |--------------------------------------------------------------------------
- |
- | The fallback locale determines the locale to use when the current one
- | is not available. You may change the value to correspond to any of
- | the language folders that are provided through your application.
- |
- */
-
- 'fallback_locale' => 'en',
-
- /*
- |--------------------------------------------------------------------------
- | Encryption Key
- |--------------------------------------------------------------------------
- |
- | This key is used by the Illuminate encrypter service and should be set
- | to a random, 32 character string, otherwise these encrypted strings
- | will not be safe. Please do this before deploying an application!
- |
- */
-
- 'key' => 'J5263afFApteAj79OGkWSpGnBf0h76kF',
-
- 'crypt' => MCRYPT_RIJNDAEL_256,
-
- /*
- |--------------------------------------------------------------------------
- | Autoloaded Service Providers
- |--------------------------------------------------------------------------
- |
- | The service providers listed here will be automatically loaded on the
- | request to your application. Feel free to add your own services to
- | this array to grant expanded functionality to your applications.
- |
- */
-
- 'providers' => array(
-
- 'Illuminate\Foundation\Providers\ArtisanServiceProvider',
- 'Illuminate\Auth\AuthServiceProvider',
- 'Illuminate\Cache\CacheServiceProvider',
- 'Illuminate\Session\CommandsServiceProvider',
- 'Illuminate\Foundation\Providers\ConsoleSupportServiceProvider',
- 'Illuminate\Routing\ControllerServiceProvider',
- 'Illuminate\Cookie\CookieServiceProvider',
- 'Illuminate\Database\DatabaseServiceProvider',
- 'Illuminate\Encryption\EncryptionServiceProvider',
- 'Illuminate\Filesystem\FilesystemServiceProvider',
- 'Illuminate\Hashing\HashServiceProvider',
- 'Illuminate\Html\HtmlServiceProvider',
- 'Illuminate\Log\LogServiceProvider',
- 'Illuminate\Mail\MailServiceProvider',
- 'Illuminate\Database\MigrationServiceProvider',
- 'Illuminate\Pagination\PaginationServiceProvider',
- 'Illuminate\Queue\QueueServiceProvider',
- 'Illuminate\Redis\RedisServiceProvider',
- 'Illuminate\Remote\RemoteServiceProvider',
- 'Illuminate\Auth\Reminders\ReminderServiceProvider',
- 'Illuminate\Database\SeedServiceProvider',
- 'Illuminate\Session\SessionServiceProvider',
- 'Illuminate\Translation\TranslationServiceProvider',
- 'Illuminate\Validation\ValidationServiceProvider',
- 'Illuminate\View\ViewServiceProvider',
- 'Illuminate\Workbench\WorkbenchServiceProvider',
-
- ),
-
- /*
- |--------------------------------------------------------------------------
- | Service Provider Manifest
- |--------------------------------------------------------------------------
- |
- | The service provider manifest is used by Laravel to lazy load service
- | providers which are not needed for each request, as well to keep a
- | list of all of the services. Here, you may set its storage spot.
- |
- */
-
- 'manifest' => storage_path().'/meta',
-
- /*
- |--------------------------------------------------------------------------
- | Class Aliases
- |--------------------------------------------------------------------------
- |
- | This array of class aliases will be registered when this application
- | is started. However, feel free to register as many as you wish as
- | the aliases are "lazy" loaded so they don't hinder performance.
- |
- */
-
- 'aliases' => array(
-
- 'App' => 'Illuminate\Support\Facades\App',
- 'Artisan' => 'Illuminate\Support\Facades\Artisan',
- 'Auth' => 'Illuminate\Support\Facades\Auth',
- 'Blade' => 'Illuminate\Support\Facades\Blade',
- 'Cache' => 'Illuminate\Support\Facades\Cache',
- 'ClassLoader' => 'Illuminate\Support\ClassLoader',
- 'Config' => 'Illuminate\Support\Facades\Config',
- 'Controller' => 'Illuminate\Routing\Controller',
- 'Cookie' => 'Illuminate\Support\Facades\Cookie',
- 'Crypt' => 'Illuminate\Support\Facades\Crypt',
- 'DB' => 'Illuminate\Support\Facades\DB',
- 'Eloquent' => 'Illuminate\Database\Eloquent\Model',
- 'Event' => 'Illuminate\Support\Facades\Event',
- 'File' => 'Illuminate\Support\Facades\File',
- 'Form' => 'Illuminate\Support\Facades\Form',
- 'Hash' => 'Illuminate\Support\Facades\Hash',
- 'HTML' => 'Illuminate\Support\Facades\HTML',
- 'Input' => 'Illuminate\Support\Facades\Input',
- 'Lang' => 'Illuminate\Support\Facades\Lang',
- 'Log' => 'Illuminate\Support\Facades\Log',
- 'Mail' => 'Illuminate\Support\Facades\Mail',
- 'Paginator' => 'Illuminate\Support\Facades\Paginator',
- 'Password' => 'Illuminate\Support\Facades\Password',
- 'Queue' => 'Illuminate\Support\Facades\Queue',
- 'Redirect' => 'Illuminate\Support\Facades\Redirect',
- 'Redis' => 'Illuminate\Support\Facades\Redis',
- 'Request' => 'Illuminate\Support\Facades\Request',
- 'Response' => 'Illuminate\Support\Facades\Response',
- 'Route' => 'Illuminate\Support\Facades\Route',
- 'Schema' => 'Illuminate\Support\Facades\Schema',
- 'Seeder' => 'Illuminate\Database\Seeder',
- 'Session' => 'Illuminate\Support\Facades\Session',
- 'SSH' => 'Illuminate\Support\Facades\SSH',
- 'Str' => 'Illuminate\Support\Str',
- 'URL' => 'Illuminate\Support\Facades\URL',
- 'Validator' => 'Illuminate\Support\Facades\Validator',
- 'View' => 'Illuminate\Support\Facades\View',
-
- ),
-
-);
diff --git a/laravel/notejam/app/config/auth.php b/laravel/notejam/app/config/auth.php
deleted file mode 100644
index eacbbfaed..000000000
--- a/laravel/notejam/app/config/auth.php
+++ /dev/null
@@ -1,71 +0,0 @@
- 'eloquent',
-
- /*
- |--------------------------------------------------------------------------
- | Authentication Model
- |--------------------------------------------------------------------------
- |
- | When using the "Eloquent" authentication driver, we need to know which
- | Eloquent model should be used to retrieve your users. Of course, it
- | is often just the "User" model but you may use whatever you like.
- |
- */
-
- 'model' => 'User',
-
- /*
- |--------------------------------------------------------------------------
- | Authentication Table
- |--------------------------------------------------------------------------
- |
- | When using the "Database" authentication driver, we need to know which
- | table should be used to retrieve your users. We have chosen a basic
- | default value but you may easily change it to any table you like.
- |
- */
-
- 'table' => 'users',
-
- /*
- |--------------------------------------------------------------------------
- | Password Reminder Settings
- |--------------------------------------------------------------------------
- |
- | Here you may set the settings for password reminders, including a view
- | that should be used as your password reminder e-mail. You will also
- | be able to set the name of the table that holds the reset tokens.
- |
- | The "expire" time is the number of minutes that the reminder should be
- | considered valid. This security feature keeps tokens short-lived so
- | they have less time to be guessed. You may change this as needed.
- |
- */
-
- 'reminder' => array(
-
- 'email' => 'emails.auth.reminder',
-
- 'table' => 'password_reminders',
-
- 'expire' => 60,
-
- ),
-
-);
diff --git a/laravel/notejam/app/config/cache.php b/laravel/notejam/app/config/cache.php
deleted file mode 100644
index ce8984239..000000000
--- a/laravel/notejam/app/config/cache.php
+++ /dev/null
@@ -1,89 +0,0 @@
- 'file',
-
- /*
- |--------------------------------------------------------------------------
- | File Cache Location
- |--------------------------------------------------------------------------
- |
- | When using the "file" cache driver, we need a location where the cache
- | files may be stored. A sensible default has been specified, but you
- | are free to change it to any other place on disk that you desire.
- |
- */
-
- 'path' => storage_path().'/cache',
-
- /*
- |--------------------------------------------------------------------------
- | Database Cache Connection
- |--------------------------------------------------------------------------
- |
- | When using the "database" cache driver you may specify the connection
- | that should be used to store the cached items. When this option is
- | null the default database connection will be utilized for cache.
- |
- */
-
- 'connection' => null,
-
- /*
- |--------------------------------------------------------------------------
- | Database Cache Table
- |--------------------------------------------------------------------------
- |
- | When using the "database" cache driver we need to know the table that
- | should be used to store the cached items. A default table name has
- | been provided but you're free to change it however you deem fit.
- |
- */
-
- 'table' => 'cache',
-
- /*
- |--------------------------------------------------------------------------
- | Memcached Servers
- |--------------------------------------------------------------------------
- |
- | Now you may specify an array of your Memcached servers that should be
- | used when utilizing the Memcached cache driver. All of the servers
- | should contain a value for "host", "port", and "weight" options.
- |
- */
-
- 'memcached' => array(
-
- array('host' => '127.0.0.1', 'port' => 11211, 'weight' => 100),
-
- ),
-
- /*
- |--------------------------------------------------------------------------
- | Cache Key Prefix
- |--------------------------------------------------------------------------
- |
- | When utilizing a RAM based store such as APC or Memcached, there might
- | be other applications utilizing the same cache. So, we'll specify a
- | value to get prefixed to all our keys so we can avoid collisions.
- |
- */
-
- 'prefix' => 'laravel',
-
-);
diff --git a/laravel/notejam/app/config/compile.php b/laravel/notejam/app/config/compile.php
deleted file mode 100644
index d5e55181b..000000000
--- a/laravel/notejam/app/config/compile.php
+++ /dev/null
@@ -1,18 +0,0 @@
- PDO::FETCH_CLASS,
-
- /*
- |--------------------------------------------------------------------------
- | Default Database Connection Name
- |--------------------------------------------------------------------------
- |
- | Here you may specify which of the database connections below you wish
- | to use as your default connection for all database work. Of course
- | you may use many connections at once using the Database library.
- |
- */
-
- 'default' => 'sqlite',
-
- /*
- |--------------------------------------------------------------------------
- | Database Connections
- |--------------------------------------------------------------------------
- |
- | Here are each of the database connections setup for your application.
- | Of course, examples of configuring each database platform that is
- | supported by Laravel is shown below to make development simple.
- |
- |
- | All database work in Laravel is done through the PHP PDO facilities
- | so make sure you have the driver for your particular database of
- | choice installed on your machine before you begin development.
- |
- */
-
- 'connections' => array(
-
- 'sqlite' => array(
- 'driver' => 'sqlite',
- 'database' => __DIR__.'/../database/notejam.db',
- 'prefix' => '',
- ),
-
- 'mysql' => array(
- 'driver' => 'mysql',
- 'host' => 'localhost',
- 'database' => 'database',
- 'username' => 'root',
- 'password' => '',
- 'charset' => 'utf8',
- 'collation' => 'utf8_unicode_ci',
- 'prefix' => '',
- ),
-
- 'pgsql' => array(
- 'driver' => 'pgsql',
- 'host' => 'localhost',
- 'database' => 'database',
- 'username' => 'root',
- 'password' => '',
- 'charset' => 'utf8',
- 'prefix' => '',
- 'schema' => 'public',
- ),
-
- 'sqlsrv' => array(
- 'driver' => 'sqlsrv',
- 'host' => 'localhost',
- 'database' => 'database',
- 'username' => 'root',
- 'password' => '',
- 'prefix' => '',
- ),
-
- ),
-
- /*
- |--------------------------------------------------------------------------
- | Migration Repository Table
- |--------------------------------------------------------------------------
- |
- | This table keeps track of all the migrations that have already run for
- | your application. Using this information, we can determine which of
- | the migrations on disk haven't actually been run in the database.
- |
- */
-
- 'migrations' => 'migrations',
-
- /*
- |--------------------------------------------------------------------------
- | Redis Databases
- |--------------------------------------------------------------------------
- |
- | Redis is an open source, fast, and advanced key-value store that also
- | provides a richer set of commands than a typical key-value systems
- | such as APC or Memcached. Laravel makes it easy to dig right in.
- |
- */
-
- 'redis' => array(
-
- 'cluster' => false,
-
- 'default' => array(
- 'host' => '127.0.0.1',
- 'port' => 6379,
- 'database' => 0,
- ),
-
- ),
-
- 'test' => array(
- 'driver' => 'sqlite',
- 'database' => 'memory:',
- 'prefix' => '',
- ),
-
-);
diff --git a/laravel/notejam/app/config/local/app.php b/laravel/notejam/app/config/local/app.php
deleted file mode 100644
index c56fcb9ce..000000000
--- a/laravel/notejam/app/config/local/app.php
+++ /dev/null
@@ -1,18 +0,0 @@
- true,
-
-);
diff --git a/laravel/notejam/app/config/mail.php b/laravel/notejam/app/config/mail.php
deleted file mode 100644
index 06be66551..000000000
--- a/laravel/notejam/app/config/mail.php
+++ /dev/null
@@ -1,124 +0,0 @@
- 'smtp',
-
- /*
- |--------------------------------------------------------------------------
- | SMTP Host Address
- |--------------------------------------------------------------------------
- |
- | Here you may provide the host address of the SMTP server used by your
- | applications. A default option is provided that is compatible with
- | the Mailgun mail service which will provide reliable deliveries.
- |
- */
-
- 'host' => 'smtp.mailgun.org',
-
- /*
- |--------------------------------------------------------------------------
- | SMTP Host Port
- |--------------------------------------------------------------------------
- |
- | This is the SMTP port used by your application to delivery e-mails to
- | users of your application. Like the host we have set this value to
- | stay compatible with the Mailgun e-mail applications by default.
- |
- */
-
- 'port' => 587,
-
- /*
- |--------------------------------------------------------------------------
- | Global "From" Address
- |--------------------------------------------------------------------------
- |
- | You may wish for all e-mails sent by your application to be sent from
- | the same address. Here, you may specify a name and address that is
- | used globally for all e-mails that are sent by your application.
- |
- */
-
- 'from' => array('address' => null, 'name' => null),
-
- /*
- |--------------------------------------------------------------------------
- | E-Mail Encryption Protocol
- |--------------------------------------------------------------------------
- |
- | Here you may specify the encryption protocol that should be used when
- | the application send e-mail messages. A sensible default using the
- | transport layer security protocol should provide great security.
- |
- */
-
- 'encryption' => 'tls',
-
- /*
- |--------------------------------------------------------------------------
- | SMTP Server Username
- |--------------------------------------------------------------------------
- |
- | If your SMTP server requires a username for authentication, you should
- | set it here. This will get used to authenticate with your server on
- | connection. You may also set the "password" value below this one.
- |
- */
-
- 'username' => null,
-
- /*
- |--------------------------------------------------------------------------
- | SMTP Server Password
- |--------------------------------------------------------------------------
- |
- | Here you may set the password required by your SMTP server to send out
- | messages from your application. This will be given to the server on
- | connection so that the application will be able to send messages.
- |
- */
-
- 'password' => null,
-
- /*
- |--------------------------------------------------------------------------
- | Sendmail System Path
- |--------------------------------------------------------------------------
- |
- | When using the "sendmail" driver to send e-mails, we will need to know
- | the path to where Sendmail lives on this server. A default path has
- | been provided here, which will work well on most of your systems.
- |
- */
-
- 'sendmail' => '/usr/sbin/sendmail -bs',
-
- /*
- |--------------------------------------------------------------------------
- | Mail "Pretend"
- |--------------------------------------------------------------------------
- |
- | When this option is enabled, e-mail will not actually be sent over the
- | web and will instead be written to your application's logs files so
- | you may inspect the message. This is great for local development.
- |
- */
-
- 'pretend' => true,
-
-);
diff --git a/laravel/notejam/app/config/packages/.gitkeep b/laravel/notejam/app/config/packages/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/laravel/notejam/app/config/queue.php b/laravel/notejam/app/config/queue.php
deleted file mode 100644
index 1fa4467e0..000000000
--- a/laravel/notejam/app/config/queue.php
+++ /dev/null
@@ -1,85 +0,0 @@
- 'sync',
-
- /*
- |--------------------------------------------------------------------------
- | Queue Connections
- |--------------------------------------------------------------------------
- |
- | Here you may configure the connection information for each server that
- | is used by your application. A default configuration has been added
- | for each back-end shipped with Laravel. You are free to add more.
- |
- */
-
- 'connections' => array(
-
- 'sync' => array(
- 'driver' => 'sync',
- ),
-
- 'beanstalkd' => array(
- 'driver' => 'beanstalkd',
- 'host' => 'localhost',
- 'queue' => 'default',
- 'ttr' => 60,
- ),
-
- 'sqs' => array(
- 'driver' => 'sqs',
- 'key' => 'your-public-key',
- 'secret' => 'your-secret-key',
- 'queue' => 'your-queue-url',
- 'region' => 'us-east-1',
- ),
-
- 'iron' => array(
- 'driver' => 'iron',
- 'host' => 'mq-aws-us-east-1.iron.io',
- 'token' => 'your-token',
- 'project' => 'your-project-id',
- 'queue' => 'your-queue-name',
- 'encrypt' => false
- ),
-
- 'redis' => array(
- 'driver' => 'redis',
- 'queue' => 'default',
- ),
-
- ),
-
- /*
- |--------------------------------------------------------------------------
- | Failed Queue Jobs
- |--------------------------------------------------------------------------
- |
- | These options configure the behavior of failed queue job logging so you
- | can control which database and table are used to store the jobs that
- | have failed. You may change them to any database / table you wish.
- |
- */
-
- 'failed' => array(
-
- 'database' => 'mysql', 'table' => 'failed_jobs',
-
- ),
-
-);
diff --git a/laravel/notejam/app/config/remote.php b/laravel/notejam/app/config/remote.php
deleted file mode 100644
index 2169c434b..000000000
--- a/laravel/notejam/app/config/remote.php
+++ /dev/null
@@ -1,59 +0,0 @@
- 'production',
-
- /*
- |--------------------------------------------------------------------------
- | Remote Server Connections
- |--------------------------------------------------------------------------
- |
- | These are the servers that will be accessible via the SSH task runner
- | facilities of Laravel. This feature radically simplifies executing
- | tasks on your servers, such as deploying out these applications.
- |
- */
-
- 'connections' => array(
-
- 'production' => array(
- 'host' => '',
- 'username' => '',
- 'password' => '',
- 'key' => '',
- 'keyphrase' => '',
- 'root' => '/var/www',
- ),
-
- ),
-
- /*
- |--------------------------------------------------------------------------
- | Remote Server Groups
- |--------------------------------------------------------------------------
- |
- | Here you may list connections under a single group name, which allows
- | you to easily access all of the servers at once using a short name
- | that is extremely easy to remember, such as "web" or "database".
- |
- */
-
- 'groups' => array(
-
- 'web' => array('production')
-
- ),
-
-);
diff --git a/laravel/notejam/app/config/session.php b/laravel/notejam/app/config/session.php
deleted file mode 100644
index ae343029e..000000000
--- a/laravel/notejam/app/config/session.php
+++ /dev/null
@@ -1,140 +0,0 @@
- 'file',
-
- /*
- |--------------------------------------------------------------------------
- | Session Lifetime
- |--------------------------------------------------------------------------
- |
- | Here you may specify the number of minutes that you wish the session
- | to be allowed to remain idle before it expires. If you want them
- | to immediately expire on the browser closing, set that option.
- |
- */
-
- 'lifetime' => 120,
-
- 'expire_on_close' => false,
-
- /*
- |--------------------------------------------------------------------------
- | Session File Location
- |--------------------------------------------------------------------------
- |
- | When using the native session driver, we need a location where session
- | files may be stored. A default has been set for you but a different
- | location may be specified. This is only needed for file sessions.
- |
- */
-
- 'files' => storage_path().'/sessions',
-
- /*
- |--------------------------------------------------------------------------
- | Session Database Connection
- |--------------------------------------------------------------------------
- |
- | When using the "database" or "redis" session drivers, you may specify a
- | connection that should be used to manage these sessions. This should
- | correspond to a connection in your database configuration options.
- |
- */
-
- 'connection' => null,
-
- /*
- |--------------------------------------------------------------------------
- | Session Database Table
- |--------------------------------------------------------------------------
- |
- | When using the "database" session driver, you may specify the table we
- | should use to manage the sessions. Of course, a sensible default is
- | provided for you; however, you are free to change this as needed.
- |
- */
-
- 'table' => 'sessions',
-
- /*
- |--------------------------------------------------------------------------
- | Session Sweeping Lottery
- |--------------------------------------------------------------------------
- |
- | Some session drivers must manually sweep their storage location to get
- | rid of old sessions from storage. Here are the chances that it will
- | happen on a given request. By default, the odds are 2 out of 100.
- |
- */
-
- 'lottery' => array(2, 100),
-
- /*
- |--------------------------------------------------------------------------
- | Session Cookie Name
- |--------------------------------------------------------------------------
- |
- | Here you may change the name of the cookie used to identify a session
- | instance by ID. The name specified here will get used every time a
- | new session cookie is created by the framework for every driver.
- |
- */
-
- 'cookie' => 'laravel_session',
-
- /*
- |--------------------------------------------------------------------------
- | Session Cookie Path
- |--------------------------------------------------------------------------
- |
- | The session cookie path determines the path for which the cookie will
- | be regarded as available. Typically, this will be the root path of
- | your application but you are free to change this when necessary.
- |
- */
-
- 'path' => '/',
-
- /*
- |--------------------------------------------------------------------------
- | Session Cookie Domain
- |--------------------------------------------------------------------------
- |
- | Here you may change the domain of the cookie used to identify a session
- | in your application. This will determine which domains the cookie is
- | available to in your application. A sensible default has been set.
- |
- */
-
- 'domain' => null,
-
- /*
- |--------------------------------------------------------------------------
- | HTTPS Only Cookies
- |--------------------------------------------------------------------------
- |
- | By setting this option to true, session cookies will only be sent back
- | to the server if the browser has a HTTPS connection. This will keep
- | the cookie from being sent to you if it can not be done securely.
- |
- */
-
- 'secure' => false,
-
-);
diff --git a/laravel/notejam/app/config/testing/cache.php b/laravel/notejam/app/config/testing/cache.php
deleted file mode 100644
index 66a8a39a8..000000000
--- a/laravel/notejam/app/config/testing/cache.php
+++ /dev/null
@@ -1,20 +0,0 @@
- 'array',
-
-);
diff --git a/laravel/notejam/app/config/testing/database.php b/laravel/notejam/app/config/testing/database.php
deleted file mode 100644
index d5e72f04a..000000000
--- a/laravel/notejam/app/config/testing/database.php
+++ /dev/null
@@ -1,14 +0,0 @@
- 'sqlite',
-
- 'connections' => array(
- 'sqlite' => array(
- 'driver' => 'sqlite',
- 'database' => ':memory:',
- 'prefix' => ''
- ),
- )
-);
diff --git a/laravel/notejam/app/config/testing/session.php b/laravel/notejam/app/config/testing/session.php
deleted file mode 100644
index 0364b63dc..000000000
--- a/laravel/notejam/app/config/testing/session.php
+++ /dev/null
@@ -1,21 +0,0 @@
- 'array',
-
-);
diff --git a/laravel/notejam/app/config/view.php b/laravel/notejam/app/config/view.php
deleted file mode 100644
index 34b8f3873..000000000
--- a/laravel/notejam/app/config/view.php
+++ /dev/null
@@ -1,31 +0,0 @@
- array(__DIR__.'/../views'),
-
- /*
- |--------------------------------------------------------------------------
- | Pagination View
- |--------------------------------------------------------------------------
- |
- | This view will be used to render the pagination link output, and can
- | be easily customized here to show any view you like. A clean view
- | compatible with Twitter's Bootstrap is given to you by default.
- |
- */
-
- 'pagination' => 'pagination::slider-3',
-
-);
diff --git a/laravel/notejam/app/config/workbench.php b/laravel/notejam/app/config/workbench.php
deleted file mode 100644
index 87c5e3879..000000000
--- a/laravel/notejam/app/config/workbench.php
+++ /dev/null
@@ -1,31 +0,0 @@
- '',
-
- /*
- |--------------------------------------------------------------------------
- | Workbench Author E-Mail Address
- |--------------------------------------------------------------------------
- |
- | Like the option above, your e-mail address is used when generating new
- | workbench packages. The e-mail is placed in your composer.json file
- | automatically after the package is created by the workbench tool.
- |
- */
-
- 'email' => '',
-
-);
diff --git a/laravel/notejam/app/controllers/.gitkeep b/laravel/notejam/app/controllers/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/laravel/notejam/app/controllers/BaseController.php b/laravel/notejam/app/controllers/BaseController.php
deleted file mode 100644
index cd6f5a89f..000000000
--- a/laravel/notejam/app/controllers/BaseController.php
+++ /dev/null
@@ -1,28 +0,0 @@
-layout))
- {
- $this->layout = View::make($this->layout);
- }
- }
-
- protected function processOrderParam()
- {
- $order = array(
- 'name' => array('name', 'ASC'),
- '-name' => array('name', 'DESC'),
- 'updated_at' => array('updated_at', 'ASC'),
- '-updated_at' => array('updated_at', 'DESC'),
- );
- return $order[Input::get('order', '-updated_at')];
- }
-}
diff --git a/laravel/notejam/app/controllers/NoteController.php b/laravel/notejam/app/controllers/NoteController.php
deleted file mode 100644
index 7c853dcae..000000000
--- a/laravel/notejam/app/controllers/NoteController.php
+++ /dev/null
@@ -1,114 +0,0 @@
-processOrderParam();
- $notes = Auth::user()->notes()->orderBy(
- $orderParams[0], $orderParams[1]
- )->get();
- return View::make('note/index', array('notes' => $notes));
- }
-
- public function create()
- {
- return View::make('note/create');
- }
-
- public function store()
- {
- $validation = $this->validator();
- if ($validation->fails())
- {
- return Redirect::route('notes.create')->withErrors($validation);
- }
- $note = new Note(
- array(
- 'name' => Input::get('name'),
- 'text' => Input::get('text')
- )
- );
- $padId = (int)Input::get('pad_id');
- if ($padId) {
- $pad = Auth::user()->pads()
- ->where('id', $padId)->firstOrFail();
- $note->pad_id = $pad->id;
- }
- Auth::user()->notes()->save($note);
- return Redirect::route('notes.show', array('id' => $note->id))
- ->with('success', 'Note is successfully created.');
- }
-
- public function edit($id)
- {
- $note = $this->getNoteOrFail($id);
- return View::make('note/edit', array('note' => $note));
- }
-
- public function update($id)
- {
- $note = $this->getNoteOrFail($id);
- $validation = $this->validator();
- if ($validation->fails())
- {
- return Redirect::route('notes.edit')->withErrors($validation);
- }
- $note->update(
- array(
- 'name' => Input::get('name'),
- 'text' => Input::get('text')
- )
- );
- $padId = (int)Input::get('pad_id');
- if ($padId) {
- $pad = Auth::user()->pads()
- ->where('id', $padId)->firstOrFail();
- $note->pad_id = $pad->id;
- } else {
- $note->pad_id = null;
- }
- Auth::user()->notes()->save($note);
-
- return Redirect::route('notes.show', array('id' => $note->id))
- ->with('success', 'Note is successfully updated.');
- }
-
- public function delete($id)
- {
- $note = $this->getNoteOrFail($id);
- return View::make('note/delete', array('note' => $note));
- }
-
- public function destroy($id)
- {
- $note = $this->getNoteOrFail($id);
- $note->delete();
- return Redirect::route('all_notes')
- ->with('success', 'Note is deleted.');
- }
-
- public function show($id)
- {
- $note = $this->getNoteOrFail($id);
- return View::make('note/view', array('note' => $note));
- }
-
- private function getNoteOrFail($id)
- {
- return Auth::user()->notes()
- ->where('id', '=', $id)->firstOrFail();
- }
-
- private function validator()
- {
- return Validator::make(
- Input::all(),
- array(
- 'name' => 'required',
- 'text' => 'required',
- )
- );
- }
-}
diff --git a/laravel/notejam/app/controllers/PadController.php b/laravel/notejam/app/controllers/PadController.php
deleted file mode 100644
index 81017f24f..000000000
--- a/laravel/notejam/app/controllers/PadController.php
+++ /dev/null
@@ -1,87 +0,0 @@
-validator();
- if ($validation->fails())
- {
- return Redirect::route('pads.create')->withErrors($validation);
- }
- $pad = new Pad(array('name' => Input::get('name')));
- Auth::user()->pads()->save($pad);
- return Redirect::route('pads.show', array('id' => $pad->id))
- ->with('success', 'Pad is created.');
- }
-
- public function edit($id)
- {
- $pad = $this->getPadOrFail($id);
- return View::make('pad/edit', array('pad' => $pad));
- }
-
- public function update($id)
- {
- $pad = $this->getPadOrFail($id);
- $validation = $this->validator();
- if ($validation->fails())
- {
- return Redirect::route('pads.edit', array('id' => $pad->id))
- ->withErrors($validation);
- }
- $pad->name = Input::get('name');
- $pad->save();
- return Redirect::route('pads.show', array('id' => $pad->id))
- ->with('success', 'Pad is updated.');
- }
-
- public function show($id)
- {
- $pad = $this->getPadOrFail($id);
- $orderParams = $this->processOrderParam();
- $notes = $pad->notes()->orderBy(
- $orderParams[0], $orderParams[1]
- )->get();
- return View::make(
- 'pad/view',
- array('pad' => $pad, 'notes' => $notes)
- );
- }
-
- public function delete($id)
- {
- $pad = $this->getPadOrFail($id);
- return View::make('pad/delete', array('pad' => $pad));
- }
-
- public function destroy($id)
- {
- $pad = $this->getPadOrFail($id);
- $pad->delete();
- return Redirect::route('all_notes')
- ->with('success', 'Pad is deleted.');
- }
-
- private function getPadOrFail($id)
- {
- return Auth::user()->pads()
- ->where('id', '=', $id)->firstOrFail();
- }
-
- private function validator()
- {
- return Validator::make(
- Input::all(),
- array(
- 'name' => 'required',
- )
- );
- }
-}
-
diff --git a/laravel/notejam/app/controllers/UserController.php b/laravel/notejam/app/controllers/UserController.php
deleted file mode 100644
index 0d5745c06..000000000
--- a/laravel/notejam/app/controllers/UserController.php
+++ /dev/null
@@ -1,150 +0,0 @@
- 'required|email|unique:users',
- 'password' => 'required|min:6|confirmed',
- 'password_confirmation' => 'required|min:6',
- )
- );
- if ($validation->fails())
- {
- return Redirect::route('signup')->withErrors($validation);
- }
- $user = User::create(
- array(
- 'email' => Input::get('email'),
- 'password' => Hash::make(Input::get('password'))
- )
- );
- return Redirect::route('signin')
- ->with('success', 'Account is created. Now you can sign in.');
- }
-
- public function signin()
- {
- return View::make('user/signin');
- }
-
- public function processSignin()
- {
- $validation = Validator::make(
- Input::all(),
- array(
- 'email' => 'required|email',
- 'password' => 'required|min:6',
- )
- );
- if ($validation->fails())
- {
- return Redirect::route('signin')->withErrors($validation);
- }
- $authParams = array(
- 'email' => Input::get('email'),
- 'password' => Input::get('password')
- );
- if (Auth::attempt($authParams))
- {
- return Redirect::route('all_notes')
- ->with('success', 'Signed in now!');
- }
- return Redirect::route('signin')
- ->with('error', 'Invalid email or password');
- }
-
- public function settings()
- {
- return View::make('user/settings');
- }
-
- public function updateSettings()
- {
- $user = Auth::user();
- $validation = Validator::make(
- Input::all(),
- array(
- 'old_password' => 'required',
- 'password' => 'required|min:6|confirmed',
- 'password_confirmation' => 'required|min:6',
- )
- );
- if ($validation->fails())
- {
- return Redirect::route('settings')->withErrors($validation);
- }
- $authParams = array(
- 'email' => $user->email,
- 'password' => Input::get('old_password')
- );
- if (Auth::validate($authParams))
- {
- $user->password = Hash::make(Input::get('password'));
- return Redirect::route('settings')
- ->with('success', 'Password is successfully changed');
- } else {
- return Redirect::route('settings')
- ->with('error', 'Current password is incorrect');
- }
- }
-
- public function forgotPassword()
- {
- if (Request::isMethod('post'))
- {
- $validation = Validator::make(
- Input::all(),
- array(
- 'email' => 'required|email|exists:users',
- )
- );
- if ($validation->fails())
- {
- return Redirect::route('forgot_password')
- ->withErrors($validation);
- }
- $user = User::where(
- 'email', '=', Input::get('email')
- )->firstOrFail();
-
- $password = $this->generatePassword();
- $user->password = Hash::make($password);
- $user->save();
-
- $this->sendNewPassword($user, $password);
-
- return Redirect::route('signin')
- ->with('success', 'New password sent to you mail.');
- }
- return View::make('user/forgot-password');
- }
-
- private function generatePassword()
- {
- return substr(md5(time()), 0, 8);
- }
-
- private function sendNewPassword($user, $password)
- {
- $data = array(
- 'email' => $user->email,
- 'password' => $password
- );
- Mail::send(array('text' => 'emails.password') , $data,
- function($message) use ($user)
- {
- $message->to($user->email)->subject('New password');
- }
- );
- }
-}
-
diff --git a/laravel/notejam/app/database/migrations/.gitkeep b/laravel/notejam/app/database/migrations/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/laravel/notejam/app/database/migrations/2014_05_14_215427_create_users_table.php b/laravel/notejam/app/database/migrations/2014_05_14_215427_create_users_table.php
deleted file mode 100644
index 88be6b9f9..000000000
--- a/laravel/notejam/app/database/migrations/2014_05_14_215427_create_users_table.php
+++ /dev/null
@@ -1,34 +0,0 @@
-increments('id');
- $table->string('email');
- $table->string('password', 60);
- $table->string('remember_token', 100)->nullable();
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::drop('users');
- }
-}
diff --git a/laravel/notejam/app/database/migrations/2014_05_16_225623_create_pads_table.php b/laravel/notejam/app/database/migrations/2014_05_16_225623_create_pads_table.php
deleted file mode 100644
index b3ac08f33..000000000
--- a/laravel/notejam/app/database/migrations/2014_05_16_225623_create_pads_table.php
+++ /dev/null
@@ -1,34 +0,0 @@
-increments('id');
- $table->string('name', 255);
- $table->integer('user_id');
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- //
- }
-
-}
diff --git a/laravel/notejam/app/database/migrations/2014_05_18_180146_create_notes_table.php b/laravel/notejam/app/database/migrations/2014_05_18_180146_create_notes_table.php
deleted file mode 100644
index 9ae69da2e..000000000
--- a/laravel/notejam/app/database/migrations/2014_05_18_180146_create_notes_table.php
+++ /dev/null
@@ -1,36 +0,0 @@
-increments('id');
- $table->string('name', 255);
- $table->text('text');
- $table->integer('user_id');
- $table->integer('pad_id')->nullable();
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- //
- }
-
-}
diff --git a/laravel/notejam/app/database/production.sqlite b/laravel/notejam/app/database/production.sqlite
deleted file mode 100644
index e69de29bb..000000000
diff --git a/laravel/notejam/app/database/seeds/.gitkeep b/laravel/notejam/app/database/seeds/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/laravel/notejam/app/database/seeds/DatabaseSeeder.php b/laravel/notejam/app/database/seeds/DatabaseSeeder.php
deleted file mode 100644
index 198925207..000000000
--- a/laravel/notejam/app/database/seeds/DatabaseSeeder.php
+++ /dev/null
@@ -1,17 +0,0 @@
-call('UserTableSeeder');
- }
-
-}
diff --git a/laravel/notejam/app/filters.php b/laravel/notejam/app/filters.php
deleted file mode 100644
index 5b81f3e36..000000000
--- a/laravel/notejam/app/filters.php
+++ /dev/null
@@ -1,80 +0,0 @@
- '« Previous',
-
- 'next' => 'Next »',
-
-);
diff --git a/laravel/notejam/app/lang/en/reminders.php b/laravel/notejam/app/lang/en/reminders.php
deleted file mode 100644
index e42148e9f..000000000
--- a/laravel/notejam/app/lang/en/reminders.php
+++ /dev/null
@@ -1,24 +0,0 @@
- "Passwords must be at least six characters and match the confirmation.",
-
- "user" => "We can't find a user with that e-mail address.",
-
- "token" => "This password reset token is invalid.",
-
- "sent" => "Password reminder sent!",
-
-);
diff --git a/laravel/notejam/app/lang/en/validation.php b/laravel/notejam/app/lang/en/validation.php
deleted file mode 100644
index b03b926c8..000000000
--- a/laravel/notejam/app/lang/en/validation.php
+++ /dev/null
@@ -1,104 +0,0 @@
- "The :attribute must be accepted.",
- "active_url" => "The :attribute is not a valid URL.",
- "after" => "The :attribute must be a date after :date.",
- "alpha" => "The :attribute may only contain letters.",
- "alpha_dash" => "The :attribute may only contain letters, numbers, and dashes.",
- "alpha_num" => "The :attribute may only contain letters and numbers.",
- "array" => "The :attribute must be an array.",
- "before" => "The :attribute must be a date before :date.",
- "between" => array(
- "numeric" => "The :attribute must be between :min and :max.",
- "file" => "The :attribute must be between :min and :max kilobytes.",
- "string" => "The :attribute must be between :min and :max characters.",
- "array" => "The :attribute must have between :min and :max items.",
- ),
- "confirmed" => "The :attribute confirmation does not match.",
- "date" => "The :attribute is not a valid date.",
- "date_format" => "The :attribute does not match the format :format.",
- "different" => "The :attribute and :other must be different.",
- "digits" => "The :attribute must be :digits digits.",
- "digits_between" => "The :attribute must be between :min and :max digits.",
- "email" => "The :attribute must be a valid email address.",
- "exists" => "The selected :attribute is invalid.",
- "image" => "The :attribute must be an image.",
- "in" => "The selected :attribute is invalid.",
- "integer" => "The :attribute must be an integer.",
- "ip" => "The :attribute must be a valid IP address.",
- "max" => array(
- "numeric" => "The :attribute may not be greater than :max.",
- "file" => "The :attribute may not be greater than :max kilobytes.",
- "string" => "The :attribute may not be greater than :max characters.",
- "array" => "The :attribute may not have more than :max items.",
- ),
- "mimes" => "The :attribute must be a file of type: :values.",
- "min" => array(
- "numeric" => "The :attribute must be at least :min.",
- "file" => "The :attribute must be at least :min kilobytes.",
- "string" => "The :attribute must be at least :min characters.",
- "array" => "The :attribute must have at least :min items.",
- ),
- "not_in" => "The selected :attribute is invalid.",
- "numeric" => "The :attribute must be a number.",
- "regex" => "The :attribute format is invalid.",
- "required" => "The :attribute field is required.",
- "required_if" => "The :attribute field is required when :other is :value.",
- "required_with" => "The :attribute field is required when :values is present.",
- "required_with_all" => "The :attribute field is required when :values is present.",
- "required_without" => "The :attribute field is required when :values is not present.",
- "required_without_all" => "The :attribute field is required when none of :values are present.",
- "same" => "The :attribute and :other must match.",
- "size" => array(
- "numeric" => "The :attribute must be :size.",
- "file" => "The :attribute must be :size kilobytes.",
- "string" => "The :attribute must be :size characters.",
- "array" => "The :attribute must contain :size items.",
- ),
- "unique" => "The :attribute has already been taken.",
- "url" => "The :attribute format is invalid.",
-
- /*
- |--------------------------------------------------------------------------
- | Custom Validation Language Lines
- |--------------------------------------------------------------------------
- |
- | Here you may specify custom validation messages for attributes using the
- | convention "attribute.rule" to name the lines. This makes it quick to
- | specify a specific custom language line for a given attribute rule.
- |
- */
-
- 'custom' => array(
- 'attribute-name' => array(
- 'rule-name' => 'custom-message',
- ),
- ),
-
- /*
- |--------------------------------------------------------------------------
- | Custom Validation Attributes
- |--------------------------------------------------------------------------
- |
- | The following language lines are used to swap attribute place-holders
- | with something more reader friendly such as E-Mail Address instead
- | of "email". This simply helps us make messages a little cleaner.
- |
- */
-
- 'attributes' => array(),
-
-);
diff --git a/laravel/notejam/app/models/Note.php b/laravel/notejam/app/models/Note.php
deleted file mode 100644
index 1867ff21c..000000000
--- a/laravel/notejam/app/models/Note.php
+++ /dev/null
@@ -1,41 +0,0 @@
-belongsTo('User');
- }
-
- public function pad()
- {
- return $this->belongsTo('Pad');
- }
-
- public function smartDate()
- {
- $day = 86400;
- $date = strtotime($this->updated_at);
- $diff = floor((time() - $date) / $day);
- if ($diff < 1) {
- return "Today at " . date("H:i", $date);
- } elseif ($diff == 1) {
- return "Yesterday at " . date("H:i", $date);
- } elseif ($diff > 1 && $diff < 8) {
- return "{$diff} days ago";
- } else {
- return date("d.m.Y", $date);
- }
- }
-}
diff --git a/laravel/notejam/app/models/Pad.php b/laravel/notejam/app/models/Pad.php
deleted file mode 100644
index 95c0759be..000000000
--- a/laravel/notejam/app/models/Pad.php
+++ /dev/null
@@ -1,26 +0,0 @@
-belongsTo('User');
- }
-
- public function notes()
- {
- return $this->hasMany('Note');
- }
-}
-
diff --git a/laravel/notejam/app/models/User.php b/laravel/notejam/app/models/User.php
deleted file mode 100644
index d780769c7..000000000
--- a/laravel/notejam/app/models/User.php
+++ /dev/null
@@ -1,85 +0,0 @@
-getKey();
- }
-
- /**
- * Get the password for the user.
- *
- * @return string
- */
- public function getAuthPassword()
- {
- return $this->password;
- }
-
- /**
- * Get the token value for the "remember me" session.
- *
- * @return string
- */
- public function getRememberToken()
- {
- return $this->remember_token;
- }
-
- /**
- * Set the token value for the "remember me" session.
- *
- * @param string $value
- * @return void
- */
- public function setRememberToken($value)
- {
- $this->remember_token = $value;
- }
-
- /**
- * Get the column name for the "remember me" token.
- *
- * @return string
- */
- public function getRememberTokenName()
- {
- return 'remember_token';
- }
-
- public function pads()
- {
- return $this->hasMany('Pad');
- }
-
- public function notes()
- {
- return $this->hasMany('Note');
- }
-
-}
diff --git a/laravel/notejam/app/routes.php b/laravel/notejam/app/routes.php
deleted file mode 100644
index b25c1e562..000000000
--- a/laravel/notejam/app/routes.php
+++ /dev/null
@@ -1,91 +0,0 @@
- 'auth'), function()
-{
- Route::get('/', array(
- 'as' => 'all_notes', 'uses' => 'NoteController@index'
- )
- );
-
- # user related routes (authed)
- Route::get('settings', array(
- 'as' => 'settings', 'uses' => 'UserController@settings'
- )
- );
- Route::post('settings', array(
- 'as' => 'settings.update', 'uses' => 'UserController@updateSettings'
- )
- );
- Route::get('signout', array('as' => 'signout', function() {
- Auth::logout();
- return Redirect::route('signin');
- }));
-
- # customized pad resource controller
- Route::post('pads/{id}/update', array(
- 'as' => 'pads.update', 'uses' => 'PadController@update'
- )
- );
- Route::get('pads/{id}/delete', array(
- 'as' => 'pads.delete', 'uses' => 'PadController@delete'
- )
- );
- Route::post('pads/{id}/delete', array(
- 'as' => 'pads.destroy', 'uses' => 'PadController@destroy'
- )
- );
- Route::resource('pads', 'PadController',
- array('except' => array('destroy', 'index', 'update')));
-
- # customized note resource controller
- Route::post('notes/{id}/update', array(
- 'as' => 'notes.update', 'uses' => 'NoteController@update'
- )
- );
- Route::get('notes/{id}/delete', array(
- 'as' => 'notes.delete', 'uses' => 'NoteController@delete'
- )
- );
- Route::post('notes/{id}/delete', array(
- 'as' => 'notes.destroy', 'uses' => 'NoteController@destroy'
- )
- );
- Route::resource('notes', 'NoteController',
- array('except' => array('destroy', 'index', 'update')));
-});
-
-# user related routes (anonymous)
-Route::get(
- 'signup',
- array('as' => 'signup', 'uses' => 'UserController@signup')
-);
-Route::post(
- 'signup',
- array('as' => 'user.store', 'uses' => 'UserController@store')
-);
-
-Route::get(
- 'signin',
- array('as' => 'signin', 'uses' => 'UserController@signin')
-);
-Route::post(
- 'signin',
- array('as' => 'signin.process', 'uses' => 'UserController@processSignin')
-);
-Route::match(
- array('GET', 'POST'),
- 'forgot-password',
- array('as' => 'forgot_password', 'uses' => 'UserController@forgotPassword')
-);
-
diff --git a/laravel/notejam/app/start/artisan.php b/laravel/notejam/app/start/artisan.php
deleted file mode 100644
index 1df850bc9..000000000
--- a/laravel/notejam/app/start/artisan.php
+++ /dev/null
@@ -1,13 +0,0 @@
- 'Note',
- 'text' => 'Text',
- ),
- $override
- );
- }
-
- public function testCreateSuccess()
- {
- $data = $this->getNoteData();
- $user = $this->createUser('exists@example.com');
- $this->be($user);
- $crawler = $this->client->request(
- 'POST', URL::route('notes.store'), $data
- );
- $this->assertRedirectedToRoute(
- 'notes.show',
- array('id' => $user->notes()->first()->id)
- );
- $this->assertEquals(1, $user->notes()->count());
- }
-
- public function testCreateFailRequiredFields()
- {
- $this->be($this->createUser('exists@example.com'));
- $crawler = $this->client->request(
- 'POST', URL::route('notes.store'), array()
- );
- $this->assertSessionHasErrors(
- array('name', 'text')
- );
- }
-
- public function testCreateFailAnonymousUser()
- {
- $data = $this->getNoteData();
- $crawler = $this->client->request(
- 'POST', URL::route('notes.store'), $data
- );
- $this->assertRedirectedToRoute('signin');
- }
-
- /**
- * @expectedException Illuminate\Database\Eloquent\ModelNotFoundException
- */
- public function testCreateFailAnothersUserPad()
- {
- $user2 = $this->createUser('exists@example.com');
- $pad = $user2->pads()->save(new Pad(array('name' => 'pad')));
-
- $user = $this->createUser('exists2@example.com');
- $data = $this->getNoteData(array('pad_id' => $pad->id));
- $this->be($user);
- $crawler = $this->client->request(
- 'POST', URL::route('notes.store'), $data
- );
- }
-
- public function testEditSuccess()
- {
- $user = $this->createUser('exists@example.com');
- $this->be($user);
- $note = $user->notes()->save(
- new Note($this->getNoteData())
- );
- $crawler = $this->client->request(
- 'POST',
- URL::route('notes.update', array('id' => $note->id)),
- array('name' => 'new name', 'text' => 'new text')
- );
- $this->assertRedirectedToRoute('notes.show', array('id' => $note->id));
- }
-
- public function testEditFailRequiredFields()
- {
- $user = $this->createUser('exists@example.com');
- $this->be($user);
- $note = $user->notes()->save(
- new Note($this->getNoteData())
- );
- $crawler = $this->client->request(
- 'POST',
- URL::route('notes.update', array('id' => $note->id)),
- array()
- );
- $this->assertSessionHasErrors(
- array('name', 'text')
- );
- }
-
- /**
- * @expectedException Illuminate\Database\Eloquent\ModelNotFoundException
- */
- public function testEditFailNotAnOwner()
- {
- $user = $this->createUser('exists@example.com');
- $note = $user->notes()->save(
- new Note($this->getNoteData())
- );
- $this->be($this->createUser('exists2@example.com'));
-
- $crawler = $this->client->request(
- 'POST',
- URL::route('notes.update', array('id' => $note->id)),
- array('name' => 'new name', 'text' => 'new text')
- );
- }
-
- public function testViewSuccess()
- {
- $user = $this->createUser('exists@example.com');
- $note = $user->notes()->save(
- new Note($this->getNoteData())
- );
- $this->be($user);
- $crawler = $this->client->request(
- 'GET',
- URL::route('notes.show', array('id' => $note->id))
- );
- $this->assertTrue($this->client->getResponse()->isOk());
- }
-
- /**
- * @expectedException Illuminate\Database\Eloquent\ModelNotFoundException
- */
- public function testViewFailNotAnOwner()
- {
- $user = $this->createUser('exists@example.com');
- $note = $user->notes()->save(
- new Note($this->getNoteData())
- );
- $this->be($this->createUser('exists2@example.com'));
- $crawler = $this->client->request(
- 'GET',
- URL::route('notes.show', array('id' => $note->id))
- );
- }
-
- public function testDeleteSuccess()
- {
- $user = $this->createUser('exists@example.com');
- $note = $user->notes()->save(
- new Note($this->getNoteData())
- );
- $this->be($user);
- $crawler = $this->client->request(
- 'POST',
- URL::route('notes.destroy', array('id' => $note->id))
- );
- $this->assertRedirectedToRoute('all_notes');
- $this->assertEquals(0, $user->notes()->count());
- }
-
- /**
- * @expectedException Illuminate\Database\Eloquent\ModelNotFoundException
- */
- public function testDeleteFailNotAnOwner()
- {
- $user = $this->createUser('exists@example.com');
- $note = $user->notes()->save(
- new Note($this->getNoteData())
- );
- $this->be($this->createUser('exists2@example.com'));
- $crawler = $this->client->request(
- 'POST',
- URL::route('notes.destroy', array('id' => $note->id))
- );
- }
-}
-
-
-
diff --git a/laravel/notejam/app/tests/PadTest.php b/laravel/notejam/app/tests/PadTest.php
deleted file mode 100644
index ecae234bb..000000000
--- a/laravel/notejam/app/tests/PadTest.php
+++ /dev/null
@@ -1,138 +0,0 @@
- 'Pad',
- ),
- $override
- );
- }
-
- public function testCreateSuccess()
- {
- $data = $this->getPadData();
- $user = $this->createUser('exists@example.com');
- $this->be($user);
- $crawler = $this->client->request(
- 'POST', URL::route('pads.store'), $data
- );
- $this->assertRedirectedToRoute(
- 'pads.show',
- array('id' => $user->pads()->first()->id)
- );
- $this->assertEquals(1, $user->pads()->count());
- }
-
- public function testCreateFailRequiredFields()
- {
- $this->be($this->createUser('exists@example.com'));
- $crawler = $this->client->request(
- 'POST', URL::route('pads.store'), array()
- );
- $this->assertSessionHasErrors(
- array('name')
- );
- }
-
- public function testEditSuccess()
- {
- $user = $this->createUser('exists@example.com');
- $this->be($user);
- $pad = $user->pads()->save(new Pad(array('name' => 'pad')));
- $crawler = $this->client->request(
- 'POST',
- URL::route('pads.update', array('id' => $pad->id)),
- array('name' => 'new name')
- );
- $this->assertRedirectedToRoute('pads.show', array('id' => $pad->id));
- }
-
- public function testEditFailRequiredFields()
- {
- $user = $this->createUser('exists@example.com');
- $this->be($user);
- $pad = $user->pads()->save(new Pad(array('name' => 'pad')));
- $crawler = $this->client->request(
- 'POST',
- URL::route('pads.update', array('id' => $pad->id)),
- array()
- );
- $this->assertSessionHasErrors(
- array('name')
- );
- }
-
- /**
- * @expectedException Illuminate\Database\Eloquent\ModelNotFoundException
- */
- public function testEditFailNotAnOwner()
- {
- $user = $this->createUser('exists@example.com');
- $pad = $user->pads()->save(new Pad(array('name' => 'pad')));
-
- $this->be($this->createUser('exists2@example.com'));
- $crawler = $this->client->request(
- 'POST',
- URL::route('pads.update', array('id' => $pad->id)),
- array('name' => 'new name')
- );
- }
-
- public function testViewSuccess()
- {
- $user = $this->createUser('exists@example.com');
- $this->be($user);
- $pad = $user->pads()->save(new Pad(array('name' => 'pad')));
- $crawler = $this->client->request(
- 'GET',
- URL::route('pads.show', array('id' => $pad->id))
- );
- $this->assertTrue($this->client->getResponse()->isOk());
- }
-
- /**
- * @expectedException Illuminate\Database\Eloquent\ModelNotFoundException
- */
- public function testViewFailNotAnOwner()
- {
- $user = $this->createUser('exists@example.com');
- $pad = $user->pads()->save(new Pad(array('name' => 'pad')));
- $this->be($this->createUser('exists2@example.com'));
- $crawler = $this->client->request(
- 'GET',
- URL::route('pads.show', array('id' => $pad->id))
- );
- }
-
- public function testDeleteSuccess()
- {
- $user = $this->createUser('exists@example.com');
- $this->be($user);
- $pad = $user->pads()->save(new Pad(array('name' => 'pad')));
- $crawler = $this->client->request(
- 'POST',
- URL::route('pads.destroy', array('id' => $pad->id))
- );
- $this->assertRedirectedToRoute('all_notes');
- $this->assertEquals(0, $user->pads()->count());
- }
-
- /**
- * @expectedException Illuminate\Database\Eloquent\ModelNotFoundException
- */
- public function testDeleteFailNotAnOwner()
- {
- $user = $this->createUser('exists@example.com');
- $pad = $user->pads()->save(new Pad(array('name' => 'pad')));
- $this->be($this->createUser('exists2@example.com'));
- $crawler = $this->client->request(
- 'POST',
- URL::route('pads.destroy', array('id' => $pad->id))
- );
- }
-}
-
-
diff --git a/laravel/notejam/app/tests/TestCase.php b/laravel/notejam/app/tests/TestCase.php
deleted file mode 100644
index 2c0e90102..000000000
--- a/laravel/notejam/app/tests/TestCase.php
+++ /dev/null
@@ -1,36 +0,0 @@
-app['router']->enableFilters();
-
- Artisan::call('migrate');
- }
-
- protected function createUser($email, $password = 'password') {
- $user = User::create(
- array(
- 'email' => $email,
- 'password' => Hash::make($password)
- )
- );
- return $user;
- }
-
-}
diff --git a/laravel/notejam/app/tests/UserTest.php b/laravel/notejam/app/tests/UserTest.php
deleted file mode 100644
index f95f14d83..000000000
--- a/laravel/notejam/app/tests/UserTest.php
+++ /dev/null
@@ -1,97 +0,0 @@
- 'user@example.com',
- 'password' => 'secure_password'
- ),
- $override
- );
- }
-
- public function testSignupSuccess()
- {
- $data = $this->getUserData();
- $data['password_confirmation'] = $data['password'];
- $crawler = $this->client->request(
- 'POST', URL::route('signup'), $data
- );
- $this->assertRedirectedToRoute('signin');
- $this->assertEquals(1, User::all()->count());
- }
-
- public function testSignupFailRequiredFields()
- {
- $crawler = $this->client->request(
- 'POST', URL::route('signup'), array()
- );
- $this->assertSessionHasErrors(
- array('email', 'password', 'password_confirmation')
- );
- }
-
- public function testSignupFailInvalidEmail()
- {
- $data = $this->getUserData(array('email' => 'invalid'));
- $crawler = $this->client->request(
- 'POST', URL::route('signup'), $data
- );
- $this->assertSessionHasErrors('email');
- }
-
- public function testSignupFailEmailExists()
- {
- $email = 'exists@example.com';
- $user = $this->createUser($email);
-
- $data = $this->getUserData(array('email' => $email));
- $crawler = $this->client->request(
- 'POST', URL::route('signup'), $data
- );
- $this->assertSessionHasErrors('email');
- }
-
- public function testSignupFailPasswordsNotMatch()
- {
- $data = $this->getUserData();
- $data['password_confirmation'] = 'another_password';
- $crawler = $this->client->request(
- 'POST', URL::route('signup'), $data
- );
- $this->assertSessionHasErrors('password');
- }
-
- public function testSigninSuccess()
- {
- $data = $this->getUserData();
- $data['password'] = Hash::make($data['password']);
- $user = User::create($data);
- $crawler = $this->client->request(
- 'POST', URL::route('signin'), $this->getUserData()
- );
- $this->assertRedirectedToRoute('all_notes');
- }
-
- public function testSigninFailRequiredFields()
- {
- $crawler = $this->client->request(
- 'POST', URL::route('signin'), array()
- );
- $this->assertSessionHasErrors(
- array('email', 'password')
- );
- }
-
- public function testSigninFailInvalidCredentials()
- {
- $crawler = $this->client->request(
- 'POST', URL::route('signin'), $this->getUserData()
- );
- $this->assertRedirectedToRoute('signin');
- $this->assertSessionHas('error');
- }
-}
-
diff --git a/laravel/notejam/app/views/emails/auth/reminder.blade.php b/laravel/notejam/app/views/emails/auth/reminder.blade.php
deleted file mode 100644
index d92f2b3f5..000000000
--- a/laravel/notejam/app/views/emails/auth/reminder.blade.php
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
- Password Reset
-
-
- To reset your password, complete this form: {{ URL::to('password/reset', array($token)) }}.
-
-
-
diff --git a/laravel/notejam/app/views/emails/password.blade.php b/laravel/notejam/app/views/emails/password.blade.php
deleted file mode 100644
index d2f8e7ceb..000000000
--- a/laravel/notejam/app/views/emails/password.blade.php
+++ /dev/null
@@ -1,4 +0,0 @@
-Hi, {{ $email }}
-=========================================
-
-Your new password is {{ $password }}
diff --git a/laravel/notejam/app/views/layout.blade.php b/laravel/notejam/app/views/layout.blade.php
deleted file mode 100644
index aeb5c7aa9..000000000
--- a/laravel/notejam/app/views/layout.blade.php
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
-
-
-
-
-
- @yield('page_title')
-
-
-
-
-
-
-
- {{ HTML::style('http://cdnjs.cloudflare.com/ajax/libs/skeleton/1.2/base.min.css') }}
- {{ HTML::style('http://cdnjs.cloudflare.com/ajax/libs/skeleton/1.2/skeleton.min.css') }}
- {{ HTML::style('http://cdnjs.cloudflare.com/ajax/libs/skeleton/1.2/layout.css') }}
- {{ HTML::style('css/style.css') }}
-
-
-
-
-
-
-
-
-
- @yield('pads')
-
- @if(Session::has('success') || Session::has('error'))
-
- @if(Session::has('success'))
-
{{ Session::get('success') }}
- {{ Session::forget('success') }}
- @endif
- @if(Session::has('error'))
-
{{ Session::get('error') }}
- {{ Session::forget('error') }}
- @endif
-
- @endif
- @yield('content')
-
-
-
-
-
-
-
diff --git a/laravel/notejam/app/views/note/create.blade.php b/laravel/notejam/app/views/note/create.blade.php
deleted file mode 100644
index 6b801ba8f..000000000
--- a/laravel/notejam/app/views/note/create.blade.php
+++ /dev/null
@@ -1,24 +0,0 @@
-@extends('user')
-
-@section('page_title')
-New note
-@stop
-
-@section('content')
- {{ Form::open(array("route" => "notes.store", "class" => "note")) }}
-
- {{ Form::label('name', 'Name') . Form::text('name', Input::old('name'), array('class' => 'thirteen')) }}
- @include('partials.error', array('error' => $errors->first('name')))
-
- {{ Form::label('text', 'Text') . Form::textarea('text', Input::old('text'), array('class' => 'thirteen')) }}
- @include('partials.error', array('error' => $errors->first('text')))
-
- {{ Form::label('pad_id', 'Pad') . Form::select('pad_id', array(0 => '-----------') + Auth::user()->pads()->lists('name', 'id'), Input::old('pad_id')) }}
-
- {{ Form::submit('Create') }}
-
- {{ Form::close() }}
-
-@stop
-
-
diff --git a/laravel/notejam/app/views/note/delete.blade.php b/laravel/notejam/app/views/note/delete.blade.php
deleted file mode 100644
index 9b226b376..000000000
--- a/laravel/notejam/app/views/note/delete.blade.php
+++ /dev/null
@@ -1,16 +0,0 @@
-@extends('user')
-
-@section('page_title')
-{{ $note->name }}
-@stop
-
-@section('content')
- {{ Form::open() }}
- Are you sure you want to delete {{ $note->name }}?
- {{ Form::submit('Yes, I want to delete this note', array('class' => 'button red')) }}
- Cancel
-
- {{ Form::close() }}
-@stop
-
-
diff --git a/laravel/notejam/app/views/note/edit.blade.php b/laravel/notejam/app/views/note/edit.blade.php
deleted file mode 100644
index d95e76c86..000000000
--- a/laravel/notejam/app/views/note/edit.blade.php
+++ /dev/null
@@ -1,26 +0,0 @@
-@extends('user')
-
-@section('page_title')
-{{ $note->name }}
-@stop
-
-@section('content')
- {{ Form::open(array("route" => array("notes.update", $note->id), "class" => "note")) }}
-
- {{ Form::label('name', 'Name') . Form::text('name', $note->name, array('class' => 'thirteen')) }}
- @include('partials.error', array('error' => $errors->first('name')))
-
- {{ Form::label('text', 'Text') . Form::textarea('text', $note->text, array('class' => 'thirteen')) }}
- @include('partials.error', array('error' => $errors->first('text')))
-
- {{ Form::label('pad_id', 'Pad') . Form::select('pad_id', array(0 => '-----------') + Auth::user()->pads()->lists('name', 'id'), $note->pad_id) }}
-
- {{ Form::submit('Save') }}
-
- {{ Form::close() }}
-
-@stop
-
-
-
-
diff --git a/laravel/notejam/app/views/note/index.blade.php b/laravel/notejam/app/views/note/index.blade.php
deleted file mode 100644
index 367a52a6b..000000000
--- a/laravel/notejam/app/views/note/index.blade.php
+++ /dev/null
@@ -1,33 +0,0 @@
-@extends('user')
-
-@section('page_title')
-All notes ({{ $notes->count() }})
-@stop
-
-@section('content')
- @if ($notes->count())
-
- @else
- Create your first note.
- @endif
- New note
-@stop
diff --git a/laravel/notejam/app/views/note/view.blade.php b/laravel/notejam/app/views/note/view.blade.php
deleted file mode 100644
index 19a552c3d..000000000
--- a/laravel/notejam/app/views/note/view.blade.php
+++ /dev/null
@@ -1,21 +0,0 @@
-@extends('user')
-
-@section('page_title')
-{{ $note->name }}
-@stop
-
-@section('content')
- Last edited at {{ $note->smartDate() }}
-
-
- {{ $note->text }}
-
-
- Edit
- Delete it
-@stop
-
-
-
-
-
diff --git a/laravel/notejam/app/views/pad/create.blade.php b/laravel/notejam/app/views/pad/create.blade.php
deleted file mode 100644
index 8b4b4a84d..000000000
--- a/laravel/notejam/app/views/pad/create.blade.php
+++ /dev/null
@@ -1,18 +0,0 @@
-@extends('user')
-
-@section('page_title')
-New pad
-@stop
-
-@section('content')
- {{ Form::open(array('route' => 'pads.store')) }}
-
- {{ Form::label('name', 'Name') . Form::text('name', Input::old('name')) }}
- @include('partials.error', array('error' => $errors->first('name')))
-
- {{ Form::submit('Save') }}
-
- {{ Form::close() }}
-
-@stop
-
diff --git a/laravel/notejam/app/views/pad/delete.blade.php b/laravel/notejam/app/views/pad/delete.blade.php
deleted file mode 100644
index 21b38099f..000000000
--- a/laravel/notejam/app/views/pad/delete.blade.php
+++ /dev/null
@@ -1,15 +0,0 @@
-@extends('user')
-
-@section('page_title')
-Delete pad {{ $pad->name }}
-@stop
-
-@section('content')
- {{ Form::open(array('route' => array('pads.destroy', $pad->id))) }}
- Are you sure you want to delete {{ $pad->name }}?
- {{ Form::submit('Yes, I want to delete this pad', array('class' => 'button red')) }}
- Cancel
-
- {{ Form::close() }}
-@stop
-
diff --git a/laravel/notejam/app/views/pad/edit.blade.php b/laravel/notejam/app/views/pad/edit.blade.php
deleted file mode 100644
index ac46abe20..000000000
--- a/laravel/notejam/app/views/pad/edit.blade.php
+++ /dev/null
@@ -1,17 +0,0 @@
-@extends('user')
-
-@section('page_title')
-{{ $pad->name }}
-@stop
-
-@section('content')
- {{ Form::open(array('route' => array('pads.update', $pad->id))) }}
-
- {{ Form::label('name', 'Name') . Form::text('name', $pad->name) }}
- @include('partials.error', array('error' => $errors->first('name')))
-
- {{ Form::submit('Save') }}
- {{ Form::close() }}
- Delete pad
-
-@stop
diff --git a/laravel/notejam/app/views/pad/view.blade.php b/laravel/notejam/app/views/pad/view.blade.php
deleted file mode 100644
index 6fd1935e7..000000000
--- a/laravel/notejam/app/views/pad/view.blade.php
+++ /dev/null
@@ -1,26 +0,0 @@
-@extends('user')
-
-@section('page_title')
-{{ $pad->name; }} ({{ $notes->count() }})
-@stop
-
-@section('content')
- @if ($notes->count())
-
-
- Note ↑ ↓
- Last modified ↑ ↓
-
- @foreach ($notes as $note)
-
- {{ $note->name }}
- {{ $note->smartDate(); }}
-
- @endforeach
-
- @else
- You don't have notes in this pad yet.
- @endif
- New note
- Pad settings
-@stop
diff --git a/laravel/notejam/app/views/partials/error.blade.php b/laravel/notejam/app/views/partials/error.blade.php
deleted file mode 100644
index cf7c470da..000000000
--- a/laravel/notejam/app/views/partials/error.blade.php
+++ /dev/null
@@ -1,5 +0,0 @@
-@if($error)
-
-@endif
diff --git a/laravel/notejam/app/views/user.blade.php b/laravel/notejam/app/views/user.blade.php
deleted file mode 100644
index 6cb1edf74..000000000
--- a/laravel/notejam/app/views/user.blade.php
+++ /dev/null
@@ -1,24 +0,0 @@
-@extends('layout')
-
-@section('content_class')
-thirteen
-@stop
-
-@section('pads')
-
-
My pads
-
- @if(Auth::user()->pads->count())
-
- @else
- No pads
- @endif
-
- New pad
-
-
-@stop
diff --git a/laravel/notejam/app/views/user/forgot-password.blade.php b/laravel/notejam/app/views/user/forgot-password.blade.php
deleted file mode 100644
index 7ddd40535..000000000
--- a/laravel/notejam/app/views/user/forgot-password.blade.php
+++ /dev/null
@@ -1,18 +0,0 @@
-@extends('layout')
-
-@section('page_title')
-Forgot Password?
-@stop
-
-@section('content')
- {{ Form::open(array('class' => 'offset-by-six')) }}
-
- {{ Form::label('email', 'E-mail') . Form::text('email', Input::old('email')) }}
- @include('partials.error', array('error' => $errors->first('email')))
-
- {{ Form::submit('Send') }}
-
- {{ Form::close() }}
-@stop
-
-
diff --git a/laravel/notejam/app/views/user/settings.blade.php b/laravel/notejam/app/views/user/settings.blade.php
deleted file mode 100644
index 64ece1836..000000000
--- a/laravel/notejam/app/views/user/settings.blade.php
+++ /dev/null
@@ -1,22 +0,0 @@
-@extends('layout')
-
-@section('page_title')
-Account Settings
-@stop
-
-@section('content')
- {{ Form::open(array('class' => 'offset-by-six')) }}
-
- {{ Form::label('old_password', 'Current password') . Form::password('old_password') }}
- @include('partials.error', array('error' => $errors->first('old_password')))
- {{ Form::label('password', 'Password') . Form::password('password') }}
- @include('partials.error', array('error' => $errors->first('password')))
- {{ Form::label('password_confirmation', 'Confirm password') . Form::password('password_confirmation') }}
- @include('partials.error', array('error' => $errors->first('password_confirmation')))
-
- {{ Form::submit('Save') }}
-
- {{ Form::close() }}
-
-@stop
-
diff --git a/laravel/notejam/app/views/user/signin.blade.php b/laravel/notejam/app/views/user/signin.blade.php
deleted file mode 100644
index c118efe83..000000000
--- a/laravel/notejam/app/views/user/signin.blade.php
+++ /dev/null
@@ -1,21 +0,0 @@
-@extends('layout')
-
-@section('page_title')
-Sign In
-@stop
-
-@section('content')
- {{ Form::open(array('class' => 'offset-by-six')) }}
-
- {{ Form::label('email', 'E-mail') . Form::text('email', Input::old('email')) }}
- @include('partials.error', array('error' => $errors->first('email')))
- {{ Form::label('password', 'Password') . Form::password('password') }}
- @include('partials.error', array('error' => $errors->first('password')))
-
- {{ Form::submit('Sign in') }} or Sign up
-
- Forgot Password?
-
- {{ Form::close() }}
-@stop
-
diff --git a/laravel/notejam/app/views/user/signup.blade.php b/laravel/notejam/app/views/user/signup.blade.php
deleted file mode 100644
index 136c29755..000000000
--- a/laravel/notejam/app/views/user/signup.blade.php
+++ /dev/null
@@ -1,21 +0,0 @@
-@extends('layout')
-
-@section('page_title')
-Sign Up
-@stop
-
-@section('content')
- {{ Form::open(array('class' => 'offset-by-six')) }}
-
- {{ Form::label('email', 'E-mail') . Form::text('email', Input::old('email')) }}
- @include('partials.error', array('error' => $errors->first('email')))
- {{ Form::label('password', 'Password') . Form::password('password') }}
- @include('partials.error', array('error' => $errors->first('password')))
- {{ Form::label('password_confirmation', 'Confirm password') . Form::password('password_confirmation') }}
- @include('partials.error', array('error' => $errors->first('password_confirmation')))
-
- {{ Form::submit('Sign Up') }} or Sign in
-
- {{ Form::close() }}
-
-@stop
diff --git a/laravel/notejam/artisan b/laravel/notejam/artisan
deleted file mode 100755
index 5c408ad80..000000000
--- a/laravel/notejam/artisan
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/usr/bin/env php
-setRequestForConsoleEnvironment();
-
-$artisan = Illuminate\Console\Application::start($app);
-
-/*
-|--------------------------------------------------------------------------
-| Run The Artisan Application
-|--------------------------------------------------------------------------
-|
-| When we run the console application, the current CLI command will be
-| executed in this console and the response sent back to a terminal
-| or another output device for the developers. Here goes nothing!
-|
-*/
-
-$status = $artisan->run();
-
-/*
-|--------------------------------------------------------------------------
-| Shutdown The Application
-|--------------------------------------------------------------------------
-|
-| Once Artisan has finished running. We will fire off the shutdown events
-| so that any final work may be done by the application before we shut
-| down the process. This is the last thing to happen to the request.
-|
-*/
-
-$app->shutdown();
-
-exit($status);
diff --git a/laravel/notejam/bootstrap/autoload.php b/laravel/notejam/bootstrap/autoload.php
deleted file mode 100644
index 6b329312a..000000000
--- a/laravel/notejam/bootstrap/autoload.php
+++ /dev/null
@@ -1,75 +0,0 @@
- __DIR__.'/../app',
-
- /*
- |--------------------------------------------------------------------------
- | Public Path
- |--------------------------------------------------------------------------
- |
- | The public path contains the assets for your web application, such as
- | your JavaScript and CSS files, and also contains the primary entry
- | point for web requests into these applications from the outside.
- |
- */
-
- 'public' => __DIR__.'/../public',
-
- /*
- |--------------------------------------------------------------------------
- | Base Path
- |--------------------------------------------------------------------------
- |
- | The base path is the root of the Laravel installation. Most likely you
- | will not need to change this value. But, if for some wild reason it
- | is necessary you will do so here, just proceed with some caution.
- |
- */
-
- 'base' => __DIR__.'/..',
-
- /*
- |--------------------------------------------------------------------------
- | Storage Path
- |--------------------------------------------------------------------------
- |
- | The storage path is used by Laravel to store cached Blade views, logs
- | and other pieces of information. You may modify the path here when
- | you want to change the location of this directory for your apps.
- |
- */
-
- 'storage' => __DIR__.'/../app/storage',
-
-);
diff --git a/laravel/notejam/bootstrap/start.php b/laravel/notejam/bootstrap/start.php
deleted file mode 100644
index a55def12d..000000000
--- a/laravel/notejam/bootstrap/start.php
+++ /dev/null
@@ -1,73 +0,0 @@
-detectEnvironment(array(
-
- 'local' => array('your-machine-name'),
-
-));
-
-/*
-|--------------------------------------------------------------------------
-| Bind Paths
-|--------------------------------------------------------------------------
-|
-| Here we are binding the paths configured in paths.php to the app. You
-| should not be changing these here. If you need to change these you
-| may do so within the paths.php file and they will be bound here.
-|
-*/
-
-$app->bindInstallPaths(require __DIR__.'/paths.php');
-
-/*
-|--------------------------------------------------------------------------
-| Load The Application
-|--------------------------------------------------------------------------
-|
-| Here we will load this Illuminate application. We will keep this in a
-| separate location so we can isolate the creation of an application
-| from the actual running of the application with a given request.
-|
-*/
-
-$framework = $app['path.base'].
- '/vendor/laravel/framework/src';
-
-require $framework.'/Illuminate/Foundation/start.php';
-
-/*
-|--------------------------------------------------------------------------
-| Return The Application
-|--------------------------------------------------------------------------
-|
-| This script returns the application instance. The instance is given to
-| the calling script so we can separate the building of the instances
-| from the actual running of the application and sending responses.
-|
-*/
-
-return $app;
diff --git a/laravel/notejam/composer.json b/laravel/notejam/composer.json
deleted file mode 100644
index 6ccce0385..000000000
--- a/laravel/notejam/composer.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "name": "laravel/laravel",
- "description": "The Laravel Framework.",
- "keywords": ["framework", "laravel"],
- "license": "MIT",
- "require": {
- "laravel/framework": "4.2.*"
- },
- "require-dev": {
- "phpunit/phpunit": "3.7.*"
- },
- "autoload": {
- "classmap": [
- "app/commands",
- "app/controllers",
- "app/models",
- "app/database/migrations",
- "app/database/seeds",
- "app/tests/TestCase.php"
- ]
- },
- "scripts": {
- "post-install-cmd": [
- "php artisan clear-compiled",
- "php artisan optimize"
- ],
- "post-update-cmd": [
- "php artisan clear-compiled",
- "php artisan optimize"
- ],
- "post-create-project-cmd": [
- "php artisan key:generate"
- ]
- },
- "config": {
- "preferred-install": "dist"
- },
- "minimum-stability": "stable"
-}
diff --git a/laravel/notejam/phpunit.xml b/laravel/notejam/phpunit.xml
deleted file mode 100644
index c33042056..000000000
--- a/laravel/notejam/phpunit.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- ./app/tests/
-
-
-
diff --git a/laravel/notejam/public/.htaccess b/laravel/notejam/public/.htaccess
deleted file mode 100644
index 77827ae70..000000000
--- a/laravel/notejam/public/.htaccess
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
- Options -MultiViews
-
-
- RewriteEngine On
-
- # Redirect Trailing Slashes...
- RewriteRule ^(.*)/$ /$1 [L,R=301]
-
- # Handle Front Controller...
- RewriteCond %{REQUEST_FILENAME} !-d
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteRule ^ index.php [L]
-
diff --git a/laravel/notejam/public/css/style.css b/laravel/notejam/public/css/style.css
deleted file mode 100644
index 86cd131ff..000000000
--- a/laravel/notejam/public/css/style.css
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
-* Skeleton V1.0.3
-* Copyright 2011, Dave Gamache
-* www.getskeleton.com
-* Free to use under the MIT license.
-* http://www.opensource.org/licenses/mit-license.php
-* 7/17/2011
-*/
-
-
-/* Documentation Styles
-================================================== */
- div.container {
- padding-top: 40px; }
-
- /* Doc nav */
- nav {
- width: 160px; }
- #logo, .bold-header {
- margin-bottom: 30px;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- letter-spacing: -1px;
- color: #555;
- font-weight: bold; }
- .bold-header span {
- font-weight: normal;
- font-size: 23px;
- }
- .bold-header a.header {
- text-decoration: none;
- color: inherit;
- }
- .bold-header span.jam {
- font-size: 46px;
- line-height: 50px;
- }
- nav ul {
- float: left; }
- nav ul li {
- display: block;
- margin-bottom: 10px; }
- nav ul li a,
- nav ul li a:visited,
- nav ul li a:active {
- font-size: 14px;
- color: #555;
- text-decoration: none;
- font-weight: bold; }
- nav ul li a:hover,
- nav ul li a:focus {
- color: #222; }
- header h1 {
- font-size: 52px;
- line-height: 61px;
- letter-spacing: -1px;
- font-weight: normal;
- font-family: "Georgia", "Times New Roman", Helvetica, Arial, sans-serif; }
- hr.large {
- border: none;
- height: 8px;
- background: #ebebeb;
- margin: 50px 0; }
- div.doc-section {
- margin: 30px 0; }
-
- #whatAndWhy .row {
- padding: 30px 0 0; }
-
- #typography blockquote {
- margin-top: 20px; }
-
- .hidden-code a {
- font-size: 12px;
- color: #999; }
- .hidden-code>div {
- display: none; }
-
-
- /* Grid */
- #grid .column,
- #grid .columns {
- background: #ddd;
- height: 25px;
- line-height: 25px;
- margin-bottom: 10px;
- text-align: center;
- text-transform: uppercase;
- color: #555;
- font-size: 12px;
- font-weight: bold;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px; }
- #grid .column:hover,
- #grid .columns:hover {
- background: #bbb;
- color: #333; }
- #grid .example-grid { overflow: hidden; }
-
- .post-button-note,
- .post-button-note a {
- font-size: 11px;
- color: #999; }
-
- #examples .four.columns a {
- text-decoration: none;
- }
- #examples .four.columns a:hover {
- text-decoration: underline;
- }
-
-
- .resize {
- position: fixed;
- bottom: 0;
- right: 0;
- height: 80px;
- width: 80px;
- background: url(images/resize.png); }
-
-
- img {
- max-width: 100%;
- height: auto; }
-
- .gist-meta { display: none !important;}
-
- ul ul ul li { margin-bottom: 3px; }
-
- .twitter-share-button { margin-bottom: -18px; }
-
- /* Table stylesheets */
- table {
- width: 100%;
- border-collapse: collapse;
- }
-
- table th, table td {
- padding: 10px 10px 9px;
- font-size: 13px;
- line-height: 18px;
- text-align: left;
- }
-
- table td {
- vertical-align: top;
- border-top: solid 1px #ddd;
- }
-
- table th {
- padding-top: 9px;
- font-weight: bold;
- vertical-align: middle;
- }
-
- table.condensed th, table.condensed td {
- padding: 5px 5px 4px;
- }
-
- table.bordered {
- border-collapse: separate;
- border: solid 1px #ddd;
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
- }
-
- table.bordered th + th,
- table.bordered th + td,
- table.bordered td + td {
- border-left: solid 1px #ddd;
- }
-
- .zebra-striped tbody tr:nth-child(odd) td,
- .zebra-striped tbody tr:nth-child(odd) th {
- background: #f5f5f5;
- }
-
-.carbonad,
-.carbonad-image,
-.carbonad-text,
-.carbonad-tag {
- background: none !important;
- border: none !important;
- margin-left: 0 !important;
-}
-.carbonad-tag {
- margin-top: 6px !important;
- padding-top: 0 !important;
-}
-.carbonad-text {
- height: auto !important;
-}
-.carbonad-image {
- margin-top: 0 !important;
-}
-
-.hidden-text {
- font-size: 12px;
- color: #999;
-}
-
-td.date, th.date {
- text-align: right;
-}
-
-td.date {
- font-style: italic;
-}
-
-form.note input[type="text"], form.note textarea {
- width: 100%;
-}
-
-form hr {
- width: 218px;
- margin: 10px 0px;
-}
-
-form.note textarea {
- height: 250px;
-}
-
-div.content-area {
- min-height: 600px;
-}
-
-hr.footer {
- margin-bottom: 10px;
-}
-
-div.footer {
- margin-bottom: 10px;
- text-align: center;
- font-size: 12px;
-}
-
-form.sign-in {
- margin: 50px 0 0 0;
-}
-
-.sort_arrow {
- text-decoration: none;
-}
-
-.sort_arrow:hover {
- text-decoration: none;
- color: red;
-}
-
-div.sign-in-out-block {
- position: absolute;
- right: 14px;
- top: 8px;
- font-size: 12px;
-}
-
-div.sign-in-out-block a {
- /*text-decoration: none;*/
-}
-
-a.small-red {
- color: red;
- font-size: 12px;
-}
-
-table.notes {
- margin: 0 0 20px 0;
-}
-
-table.notes th.note {
- width: 72%;
-}
-
-table.notes td.pad {
- color: grey;
-}
-
-table.notes td.pad a {
- color: grey;
- text-decoration: underline;
- font-style: normal;
-}
-
-
-table.notes td.pad a:hover {
- color: black;
-}
-
-p.empty {
- color: grey;
- font-style: italic;
-}
-
-a.delete-note {
- float: right;
- font-size: 12px;
- color: red;
-}
-
-.red, input.red {
- color: red !important;
-}
-
-ul.errorlist, ul.errors {
- margin: -18px 0 0 0;
-}
-
-ul.errorlist li, ul.errors li {
- color: red;
-}
-
-.alert-area {
- text-align: center;
-}
-
-.alert {
- padding: 5px 8px;
- margin: 0 0 12px 0;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
-}
-
-.alert-success {
- color: #468847;
- background-color: #dff0d8;
- border: 1px solid #d6e9c6;
-}
-
-.alert-error {
- color: #b94a48;
- background-color: #f2dede;
- border: 1px solid #eed3d7;
-}
-
- /* Mobile */
- @media only screen and (max-width: 767px) {
- header h1 { font-size: 34px; line-height: 37px; }
- nav { position: relative; }
- nav ul,
- .carbonad {
- display: none;
- }
- #logo { text-align: left; }
- #examples .four.columns {
- padding-top: 30px;
- }
- }
-
- /* Mobile Landscape */
- @media only screen and (min-width: 480px) and (max-width: 767px) {
- nav ul {
- display: none;
- }
- }
-
- /* Non 960 */
- @media only screen and (max-width: 959px) {
- #logo {
- font-size: 21px;
- margin-bottom: 15px; }
- nav .button {
- padding: 9px 20px 11px; }
- }
-
- /* iPad Portrait/Browser */
- @media only screen and (min-width: 768px) and (max-width: 959px) {
- nav {
- width: 124px; }
- }
-
- /* Mobile/Browser */
- @media only screen and (max-width: 767px) {}
-
- /* Mobile Landscape/Browser */
- @media only screen and (min-width: 480px) and (max-width: 767px) {}
-
- /* Anything smaller than standard 960 */
- @media only screen and (max-width: 959px) {}
-
-
- /* iPad Portrait Only */
- @media only screen and (min-width: 768px) and (max-width: 959px) and (max-device-width: 1000px) {}
-
- /* Mobile Only */
- @media only screen and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Mobile Landscape Only */
- @media only screen and (min-width: 480px) and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Anything smaller than standard 960 on a device */
- @media only screen and (max-width: 959px) and (max-device-width: 1000px) {
- .resize { display: none; }
- }
diff --git a/laravel/notejam/public/favicon.ico b/laravel/notejam/public/favicon.ico
deleted file mode 100644
index e69de29bb..000000000
diff --git a/laravel/notejam/public/index.php b/laravel/notejam/public/index.php
deleted file mode 100644
index f08822d95..000000000
--- a/laravel/notejam/public/index.php
+++ /dev/null
@@ -1,49 +0,0 @@
-
- */
-
-/*
-|--------------------------------------------------------------------------
-| Register The Auto Loader
-|--------------------------------------------------------------------------
-|
-| Composer provides a convenient, automatically generated class loader
-| for our application. We just need to utilize it! We'll require it
-| into the script here so that we do not have to worry about the
-| loading of any our classes "manually". Feels great to relax.
-|
-*/
-
-require __DIR__.'/../bootstrap/autoload.php';
-
-/*
-|--------------------------------------------------------------------------
-| Turn On The Lights
-|--------------------------------------------------------------------------
-|
-| We need to illuminate PHP development, so let's turn on the lights.
-| This bootstraps the framework and gets it ready for use, then it
-| will load up this application so that we can run it and send
-| the responses back to the browser and delight these users.
-|
-*/
-
-$app = require_once __DIR__.'/../bootstrap/start.php';
-
-/*
-|--------------------------------------------------------------------------
-| Run The Application
-|--------------------------------------------------------------------------
-|
-| Once we have the application, we can simply call the run method,
-| which will execute the request and send the response back to
-| the client's browser allowing them to enjoy the creative
-| and wonderful application we have whipped up for them.
-|
-*/
-
-$app->run();
diff --git a/laravel/notejam/public/packages/.gitkeep b/laravel/notejam/public/packages/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/laravel/notejam/public/robots.txt b/laravel/notejam/public/robots.txt
deleted file mode 100644
index eb0536286..000000000
--- a/laravel/notejam/public/robots.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-User-agent: *
-Disallow:
diff --git a/laravel/notejam/server.php b/laravel/notejam/server.php
deleted file mode 100644
index 5f187f344..000000000
--- a/laravel/notejam/server.php
+++ /dev/null
@@ -1,19 +0,0 @@
-`_.
-
-Nette version: 2.3
-
-The application is maintained by `@fprochazka `_.
-
-==========================
-Installation and launching
-==========================
-
------
-Clone
------
-
-Clone the repo:
-
-.. code-block:: bash
-
- $ git clone git@github.com:komarserjio/notejam.git YOUR_PROJECT_DIR/
-
--------
-Install
--------
-
-Install `composer `_
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/nette/doctrine/notejam
- $ curl -s https://getcomposer.org/installer | php
-
-Install dependencies
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/nette/doctrine/notejam
- $ php composer.phar install
-
-Create empty ``config.local.neon``
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/nette/doctrine/notejam
- $ cp app/config/config.local.example.neon app/config/config.local.neon
-
-Create database schema
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/nette/doctrine/notejam
- $ php www/index.php orm:schema:up --force
-
-
-------
-Launch
-------
-
-Start built-in php web server:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/nette/doctrine/notejam/
- $ php -t `pwd`/www -S 127.0.0.1:8000 `pwd`/www/index.php
-
-Go to http://localhost:8000/ in your browser.
-
----------
-Run tests
----------
-
-Run tests:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/nette/doctrine/notejam/
- $ php -t `pwd`/www -S 127.0.0.1:8000 `pwd`/www/index.php
- $ ./vendor/bin/codecept run
-
-
-============
-Contribution
-============
-
-
-Do you have php/nette experience? Help the app to follow php and Nette Framework best practices.
-
-Please send your pull requests in the ``master`` branch.
-Always prepend your commits with framework name:
-
-.. code-block:: bash
-
- Nette: Implemented sign in functionality
-
-Read `contribution guide `_ for details.
diff --git a/nette/doctrine/notejam/.gitignore b/nette/doctrine/notejam/.gitignore
deleted file mode 100644
index 6ddedf44f..000000000
--- a/nette/doctrine/notejam/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-app/config/config.local.neon
-vendor
diff --git a/nette/doctrine/notejam/app/Components/ConfirmationControl.php b/nette/doctrine/notejam/app/Components/ConfirmationControl.php
deleted file mode 100644
index f9fbf8fe8..000000000
--- a/nette/doctrine/notejam/app/Components/ConfirmationControl.php
+++ /dev/null
@@ -1,71 +0,0 @@
-formFactory = $formFactory;
- }
-
-
-
- /**
- * @return Form
- */
- protected function createComponentForm()
- {
- $form = $this->formFactory->create();
-
- $form->addProtection();
- $form->addSubmit('confirm', 'Confirm');
- $form->onSuccess[] = function (Form $form) {
- $this->onConfirm($this);
- };
-
- return $form;
- }
-
-
-}
-
-
-
-/**
- * @see \Notejam\Components\PadsList\IPadsListControlFactory
- */
-interface IConfirmationControlFactory
-{
-
- /**
- * @return ConfirmationControl
- */
- public function create();
-}
diff --git a/nette/doctrine/notejam/app/Components/ForgottenPasswordControl.php b/nette/doctrine/notejam/app/Components/ForgottenPasswordControl.php
deleted file mode 100644
index 847b79516..000000000
--- a/nette/doctrine/notejam/app/Components/ForgottenPasswordControl.php
+++ /dev/null
@@ -1,136 +0,0 @@
-formFactory = $formFactory;
- $this->em = $em;
- $this->userRepository = $userRepository;
- $this->mailer = $mailer;
- }
-
-
-
- /**
- * Factory method for subcomponent form instance.
- * This factory is called internally by Nette in the component model.
- *
- * @return Form
- */
- protected function createComponentForm()
- {
- $form = $this->formFactory->create();
-
- $form->addText('email', 'Email')
- ->setRequired('%label is required')
- ->addRule($form::EMAIL, 'Invalid email');
-
- $form->addSubmit('save', 'Get new password');
- $form->onSuccess[] = [$this, 'formSucceeded'];
-
- return $form;
- }
-
-
-
- /**
- * Callback method, that is called once form is successfully submitted, without validation errors.
- *
- * @param Form $form
- * @param Nette\Utils\ArrayHash $values
- */
- public function formSucceeded(Form $form, $values)
- {
- if (!$user = $this->userRepository->findOneBy(['email' => $values->email])) {
- $form['email']->addError("User with given email doesn't exist");
- return;
- }
-
- // this is not a very secure way of getting new password
- // but it's the same way the symfony app is doing it...
- $newPassword = $user->generateRandomPassword();
- $this->em->flush();
-
- try {
- $message = new Nette\Mail\Message();
- $message->setSubject('Notejam password');
- $message->setFrom('noreply@notejamapp.com');
- $message->addTo($user->getEmail());
-
- // !!! Never send passwords through email !!!
- // This is only for demonstration purposes of Notejam.
- // Ideally, you can create a unique link where user can change his password
- // himself for limited amount of time, and then send the link.
- $message->setBody("Your new password is {$newPassword}");
-
- $this->mailer->send($message);
-
- } catch (Nette\Mail\SendException $e) {
- Debugger::log($e, 'email');
- $form->addError('Could not send email with new password');
- }
-
- $this->onSuccess($this);
- }
-
-}
-
-
-
-/**
- * @see \Notejam\Components\PadsList\IPadsListControlFactory
- */
-interface IForgottenPasswordControlFactory
-{
-
- /**
- * @return ForgottenPasswordControl
- */
- public function create();
-}
diff --git a/nette/doctrine/notejam/app/Components/NoteControl.php b/nette/doctrine/notejam/app/Components/NoteControl.php
deleted file mode 100644
index f0cec1c5e..000000000
--- a/nette/doctrine/notejam/app/Components/NoteControl.php
+++ /dev/null
@@ -1,172 +0,0 @@
-padRepository = $padRepository;
- $this->em = $em;
- $this->user = $user;
- $this->formFactory = $formFactory;
- }
-
-
-
- /**
- * This setter allows to edit notes instead of only creating them.
- *
- * @param Note $note
- */
- public function setNote(Note $note)
- {
- $this->note = $note;
- $this['form']->setDefaults([
- 'name' => $note->getName(),
- 'text' => $note->getText(),
- 'pad' => $note->getPad() ? $note->getPad()->getId() : NULL,
- ]);
- }
-
-
-
- /**
- * Setter for the default pad, to be pre-selected in the pad select form element.
- *
- * @param Pad|null $pad
- */
- public function setPad(Pad $pad = NULL)
- {
- if ($pad === NULL) {
- return; // ignore
- }
-
- $this['form']->setDefaults([
- 'pad' => $pad->getId(),
- ]);
- }
-
-
-
- /**
- * Factory method for subcomponent form instance.
- * This factory is called internally by Nette in the component model.
- *
- * @return Form
- */
- protected function createComponentForm()
- {
- $form = $this->formFactory->create();
-
- $form->addText('name', 'Name')
- ->setRequired('%label is required');
- $form->addTextArea('text', 'Text')
- ->setRequired('%label is required');
- $form->addSelect('pad', 'Pad')
- ->setPrompt('----------')
- ->setItems($this->padRepository->findPairs('name'));
-
- $form->addSubmit('save', 'Save');
- $form->onSuccess[] = [$this, 'formSucceeded'];
-
- return $form;
- }
-
-
-
- /**
- * Callback method, that is called once form is successfully submitted, without validation errors.
- *
- * @param Form $form
- * @param Nette\Utils\ArrayHash $values
- */
- public function formSucceeded(Form $form, $values)
- {
- if ($this->note === NULL) {
- $note = new Note($this->user->getIdentity());
- $this->em->persist($note);
-
- } else {
- $note = $this->note;
- }
-
- $note->setName($values->name);
- $note->setText($values->text);
-
- if ($values->pad === NULL) {
- $note->setPad(NULL);
-
- } else {
- $note->setPad($this->padRepository->find($values->pad));
- }
-
- $this->em->flush();
-
- $this->onSuccess($this);
- }
-
-}
-
-
-
-/**
- * @see \Notejam\Components\PadsList\IPadsListControlFactory
- */
-interface INoteControlFactory
-{
-
- /**
- * @return NoteControl
- */
- function create();
-}
diff --git a/nette/doctrine/notejam/app/Components/PadsControl.php b/nette/doctrine/notejam/app/Components/PadsControl.php
deleted file mode 100644
index e9c367498..000000000
--- a/nette/doctrine/notejam/app/Components/PadsControl.php
+++ /dev/null
@@ -1,129 +0,0 @@
-em = $em;
- $this->user = $user;
- $this->formFactory = $formFactory;
- }
-
-
-
- /**
- * This setter allows to edit pads instead of only creating them.
- *
- * @param Pad $pad
- */
- public function setPad(Pad $pad)
- {
- $this->pad = $pad;
- $this['form']->setDefaults([
- 'name' => $pad->getName(),
- ]);
- }
-
-
-
- /**
- * Factory method for subcomponent form instance.
- * This factory is called internally by Nette in the component model.
- *
- * @return Form
- */
- protected function createComponentForm()
- {
- $form = $this->formFactory->create();
-
- $form->addText('name', 'Name')
- ->setRequired('%label is required');
-
- $form->addSubmit('save', 'Save');
- $form->onSuccess[] = [$this, 'formSucceeded'];
-
- return $form;
- }
-
-
-
- /**
- * Callback method, that is called once form is successfully submitted, without validation errors.
- *
- * @param Form $form
- * @param Nette\Utils\ArrayHash $values
- */
- public function formSucceeded(Form $form, $values)
- {
- if ($this->pad === NULL) {
- $this->em->persist($pad = new Pad($this->user->getIdentity()));
-
- } else {
- $pad = $this->pad;
- }
-
- $pad->setName($values->name);
- $this->em->flush($pad);
-
- $this->onSuccess($this, $pad);
- }
-
-}
-
-
-
-/**
- * @see \Notejam\Components\PadsList\IPadsListControlFactory
- */
-interface IPadsControlFactory
-{
-
- /**
- * @return PadsControl
- */
- function create();
-}
diff --git a/nette/doctrine/notejam/app/Components/PadsList/PadsListControl.php b/nette/doctrine/notejam/app/Components/PadsList/PadsListControl.php
deleted file mode 100644
index 7406c7cb9..000000000
--- a/nette/doctrine/notejam/app/Components/PadsList/PadsListControl.php
+++ /dev/null
@@ -1,60 +0,0 @@
-padRepository = $padRepository;
- $this->user = $user;
- }
-
-
-
- public function render()
- {
- $this->template->pads = $this->padRepository->findBy(['user' => $this->user->getId()]);
- $this->template->render(__DIR__ . '/default.latte');
- }
-
-}
-
-
-
-/**
- * Interface for automatically generated factory (handled by Nette/DI),
- * that is used for creating new instance of the PadsListControl.
- *
- * This probably should be in a separated file, but this is more convenient.
- */
-interface IPadsListControlFactory
-{
-
- /**
- * @return PadsListControl
- */
- public function create();
-}
diff --git a/nette/doctrine/notejam/app/Components/PadsList/default.latte b/nette/doctrine/notejam/app/Components/PadsList/default.latte
deleted file mode 100644
index 66ea4a20d..000000000
--- a/nette/doctrine/notejam/app/Components/PadsList/default.latte
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
My pads
-
- {if count($pads)}
-
- {else}
- No pads
- {/if}
-
- New pad
-
-
diff --git a/nette/doctrine/notejam/app/Components/SettingsControl.php b/nette/doctrine/notejam/app/Components/SettingsControl.php
deleted file mode 100644
index 62425dd15..000000000
--- a/nette/doctrine/notejam/app/Components/SettingsControl.php
+++ /dev/null
@@ -1,116 +0,0 @@
-user = $user;
- $this->em = $em;
- $this->formFactory = $formFactory;
- }
-
-
-
- /**
- * Factory method for subcomponent form instance.
- * This factory is called internally by Nette in the component model.
- *
- * @return Form
- */
- protected function createComponentForm()
- {
- $form = $this->formFactory->create();
-
- $form->addPassword('current', 'Current password')
- ->setRequired('%label is required');
- $form->addPassword('password', 'New password')
- ->setRequired('%label is required');
- $form->addPassword('confirm', 'Confirm')
- ->setRequired('%label is required')
- ->addRule(Form::EQUAL, 'New passwords must match', $form['password']);
-
- $form->addSubmit('save', 'Change password');
- $form->onSuccess[] = [$this, 'formSucceeded'];
-
- return $form;
- }
-
-
-
- /**
- * Callback method, that is called once form is successfully submitted, without validation errors.
- *
- * @param Form $form
- * @param Nette\Utils\ArrayHash $values
- */
- public function formSucceeded(Form $form, $values)
- {
- /** @var User $user */
- $user = $this->user->getIdentity();
-
- try {
- $user->changePassword($values->current, $values->password);
- $this->em->flush();
- $this->onSuccess($this);
-
- } catch (InvalidPasswordException $e) {
- $form['current']->addError('Invalid current password');
- }
- }
-
-}
-
-
-
-/**
- * @see \Notejam\Components\PadsList\IPadsListControlFactory
- */
-interface ISettingsControlFactory
-{
-
- /**
- * @return SettingsControl
- */
- public function create();
-}
diff --git a/nette/doctrine/notejam/app/Components/SignInControl.php b/nette/doctrine/notejam/app/Components/SignInControl.php
deleted file mode 100644
index 11c9bbe1a..000000000
--- a/nette/doctrine/notejam/app/Components/SignInControl.php
+++ /dev/null
@@ -1,100 +0,0 @@
-user = $user;
- $this->formFactory = $formFactory;
- }
-
-
-
- /**
- * Factory method for subcomponent form instance.
- * This factory is called internally by Nette in the component model.
- *
- * @return Form
- */
- protected function createComponentForm()
- {
- $form = $this->formFactory->create();
-
- $form->addText('email', 'Email')
- ->setRequired('%label is required')
- ->addRule($form::EMAIL);
- $form->addPassword('password', 'Password')
- ->setRequired('%label is required');
-
- $form->addSubmit('send');
- $form->onSuccess[] = [$this, 'formSucceeded'];
-
- return $form;
- }
-
-
-
- /**
- * Callback method, that is called once form is successfully submitted, without validation errors.
- *
- * @param Form $form
- * @param Nette\Utils\ArrayHash $values
- */
- public function formSucceeded(Form $form, $values)
- {
- try {
- $this->user->login($values->email, $values->password);
- $this->onSuccess($this);
-
- } catch (Nette\Security\AuthenticationException $e) {
- $form->addError($e->getMessage());
- }
- }
-
-}
-
-
-
-/**
- * @see \Notejam\Components\PadsList\IPadsListControlFactory
- */
-interface ISignInControlFactory
-{
-
- /**
- * @return SignInControl
- */
- public function create();
-}
diff --git a/nette/doctrine/notejam/app/Components/SignUpControl.php b/nette/doctrine/notejam/app/Components/SignUpControl.php
deleted file mode 100644
index 81cd73ede..000000000
--- a/nette/doctrine/notejam/app/Components/SignUpControl.php
+++ /dev/null
@@ -1,125 +0,0 @@
-user = $user;
- $this->em = $em;
- $this->userRepository = $userRepository;
- $this->formFactory = $formFactory;
- }
-
-
-
- /**
- * Factory method for subcomponent form instance.
- * This factory is called internally by Nette in the component model.
- *
- * @return Form
- */
- protected function createComponentForm()
- {
- $form = $this->formFactory->create();
-
- $form->addText('email', 'Email')
- ->setRequired('%label is required')
- ->addRule($form::EMAIL);
- $form->addPassword('password', 'Password')
- ->setRequired('%label is required');
- $form->addPassword('confirm', 'Confirm')
- ->setRequired('%label is required')
- ->addRule(Form::EQUAL, 'New passwords must match', $form['password']);
-
- $form->addSubmit('send');
- $form->onSuccess[] = [$this, 'formSucceeded'];
-
- $form->onValidate[] = function (Form $form, $values) {
- if ($this->userRepository->countBy(['email' => $values->email]) > 0) {
- $form->addError('Account with this email already exists');
- }
- };
-
- return $form;
- }
-
-
-
- /**
- * Callback method, that is called once form is successfully submitted, without validation errors.
- *
- * @param Form $form
- * @param Nette\Utils\ArrayHash $values
- */
- public function formSucceeded(Form $form, $values)
- {
- $user = new User($values->email, $values->password);
- $this->em->persist($user);
- $this->em->flush();
-
- // directly login user on signup
- // $this->user->login($user);
-
- $this->onSuccess($this);
- }
-
-}
-
-
-
-/**
- * @see \Notejam\Components\PadsList\IPadsListControlFactory
- */
-interface ISignUpControlFactory
-{
-
- /**
- * @return SignUpControl
- */
- public function create();
-}
diff --git a/nette/doctrine/notejam/app/Presenters/BasePresenter.php b/nette/doctrine/notejam/app/Presenters/BasePresenter.php
deleted file mode 100644
index a4ccaa27d..000000000
--- a/nette/doctrine/notejam/app/Presenters/BasePresenter.php
+++ /dev/null
@@ -1,68 +0,0 @@
-padsListControlFactory->create();
- }
-
-
-
- /**
- * This allows me to implement a basic access control for presenters.
- *
- * This method is called for every presenter run,
- * once it's created before the presenter startup,
- * and for every other lifecycle methods, like render, action and signals.
- */
- public function checkRequirements($element)
- {
- $user = PresenterComponentReflection::parseAnnotation($element, 'User');
- if ($user === FALSE) {
- return; // not protected
- }
-
- if (!$this->getUser()->isLoggedIn()) {
- $this->forbiddenAccess();
- }
- }
-
-
-
- /**
- * The default behaviour for parts of app, where the user is not allowed for some reason.
- * This can be overwritten in subclasses to achieve different behaviour.
- */
- protected function forbiddenAccess()
- {
- $this->redirect('User:signIn');
- }
-
-}
diff --git a/nette/doctrine/notejam/app/Presenters/Error4xxPresenter.php b/nette/doctrine/notejam/app/Presenters/Error4xxPresenter.php
deleted file mode 100644
index 666e5e05a..000000000
--- a/nette/doctrine/notejam/app/Presenters/Error4xxPresenter.php
+++ /dev/null
@@ -1,27 +0,0 @@
-getCode()}.latte";
- $this->template->setFile(is_file($file) ? $file : __DIR__ . '/templates/Error/4xx.latte');
- }
-
-}
diff --git a/nette/doctrine/notejam/app/Presenters/ErrorPresenter.php b/nette/doctrine/notejam/app/Presenters/ErrorPresenter.php
deleted file mode 100644
index 2d05af731..000000000
--- a/nette/doctrine/notejam/app/Presenters/ErrorPresenter.php
+++ /dev/null
@@ -1,58 +0,0 @@
-logger = $logger;
- }
-
-
-
- /**
- * This method is usually implemented by the more complex UI\Presenter
- * But since an unhandled exception might have occurred,
- * it should be processed as simply as possible to avoid any further problems or even another exception.
- *
- * @param Nette\Application\Request $request
- * @return Responses\CallbackResponse|Responses\ForwardResponse
- */
- public function run(Nette\Application\Request $request)
- {
- $exception = $request->getParameter('exception');
-
- // if it's a simple BadRequestException, use the more powerful presenter
- if ($exception instanceof Nette\Application\BadRequestException) {
- return new Responses\ForwardResponse($request->setPresenterName('Error4xx'));
- }
-
- $this->logger->log($exception, ILogger::EXCEPTION);
-
- // the 500 means unhandled exception, which should translate to the simplest page possible
- return new Responses\CallbackResponse(
- function () {
- require __DIR__ . '/templates/Error/500.phtml';
- }
- );
- }
-
-}
diff --git a/nette/doctrine/notejam/app/Presenters/NotePresenter.php b/nette/doctrine/notejam/app/Presenters/NotePresenter.php
deleted file mode 100644
index 39b42d8bb..000000000
--- a/nette/doctrine/notejam/app/Presenters/NotePresenter.php
+++ /dev/null
@@ -1,252 +0,0 @@
-getParameter('id')) {
- $this->note = $this->noteRepository->findOneBy([
- 'id' => $id,
- 'user' => $this->user->getId()
- ]);
-
- if (!$this->note) {
- $this->error();
- }
- }
-
- if ($padId = $this->getParameter('pad')) {
- $this->pad = $this->padRepository->findOneBy([
- 'id' => $padId,
- 'user' => $this->user->getId()
- ]);
-
- if (!$this->pad) {
- $this->error();
- }
- }
- }
-
-
-
- /**
- * This method is called before the render method.
- * It is a good place to add code that would be duplicated in all render methods.
- */
- protected function beforeRender()
- {
- parent::beforeRender();
-
- // so we don't have to repeat the code in every render method
- $this->template->note = $this->note;
- }
-
-
-
- /**
- * Prepares template variables for the default action.
- *
- * @param string $order
- */
- public function renderDefault($order = 'name')
- {
- $this->template->notes = $this->noteRepository->findBy(
- [
- 'user' => $this->getUser()->getId()
- ],
- $this->noteRepository->buildOrderBy($order)
- );
- }
-
-
-
- /**
- * Since the note is required for the detail,
- * if it haven't been found, the presenter should end with 404 error.
- */
- public function actionDetail($id)
- {
- if (!$this->note) {
- $this->error();
- }
- }
-
-
-
- /**
- * Since the note is required for the edit,
- * if it haven't been found, the presenter should end with 404 error.
- */
- public function actionEdit($id)
- {
- if (!$this->note) {
- $this->error();
- }
- }
-
-
-
- /**
- * Since the note is required for the delete,
- * if it haven't been found, the presenter should end with 404 error.
- */
- public function actionDelete($id)
- {
- if (!$this->note) {
- $this->error();
- }
- }
-
-
-
- /**
- * Factory method for subcomponent form instance.
- * This factory is called internally by Nette in the component model.
- *
- * This factory creates a ConfirmationControl,
- * that calls the onConfirm event if user clicks on the button.
- *
- * @return \Notejam\Components\ConfirmationControl
- */
- protected function createComponentDeleteNote()
- {
- if ($this->action !== 'delete') {
- $this->error();
- }
-
- $control = $this->confirmationControlFactory->create();
- $control->onConfirm[] = function () {
- $this->em->remove($this->note);
- $this->em->flush();
- $this->flashMessage('The note has been deleted', 'success');
- $this->redirect('Note:');
- };
-
- return $control;
- }
-
-
-
- /**
- * Factory method for subcomponent form instance.
- * This factory is called internally by Nette in the component model.
- *
- * This factory creates a NoteControl that handles creation of new notes.
- *
- * @return \Notejam\Components\NoteControl
- * @throws Nette\Application\BadRequestException
- */
- protected function createComponentCreateNote()
- {
- if ($this->action !== 'create') {
- $this->error();
- }
-
- $control = $this->noteControlFactory->create();
- $control->setPad($this->pad);
- $control->onSuccess[] = function () {
- $this->flashMessage('Note was successfully created', 'success');
- $this->redirect('Note:');
- };
-
- return $control;
- }
-
-
-
- /**
- * Factory method for subcomponent form instance.
- * This factory is called internally by Nette in the component model.
- *
- * This factory creates a NoteControl that handles edit of existing notes.
- *
- * @return \Notejam\Components\NoteControl
- * @throws Nette\Application\BadRequestException
- */
- protected function createComponentEditNote()
- {
- if ($this->action !== 'edit' || !$this->note) {
- $this->error();
- }
-
- $control = $this->noteControlFactory->create();
- $control->setNote($this->note);
- $control->onSuccess[] = function () {
- $this->flashMessage('Note was successfully edited', 'success');
- $this->redirect('Note:');
- };
-
- return $control;
- }
-
-}
diff --git a/nette/doctrine/notejam/app/Presenters/PadPresenter.php b/nette/doctrine/notejam/app/Presenters/PadPresenter.php
deleted file mode 100644
index c65e942a4..000000000
--- a/nette/doctrine/notejam/app/Presenters/PadPresenter.php
+++ /dev/null
@@ -1,223 +0,0 @@
-getParameter('id')) {
- $this->pad = $this->padRepository->findOneBy([
- 'id' => $id,
- 'user' => $this->user->getId()
- ]);
- }
- }
-
-
-
- /**
- * This method is called before the render method.
- * It is a good place to add code that would be duplicated in all render methods.
- */
- protected function beforeRender()
- {
- parent::beforeRender();
-
- // so we don't have to repeat the code in every render method
- $this->template->pad = $this->pad;
- }
-
-
-
- /**
- * Since the pad is required for the edit,
- * if it haven't been found, the presenter should end with 404 error.
- *
- * Prepares template variables for the detail action.
- */
- public function actionDetail($id, $order = 'name')
- {
- if (!$this->pad) {
- $this->error();
- }
-
- $this->template->notes = $this->noteRepository->findBy(
- [
- 'user' => $this->getUser()->getId(),
- 'pad' => $this->pad->getId()
- ],
- $this->noteRepository->buildOrderBy($order)
- );
- }
-
-
-
- /**
- * Since the pad is required for the edit,
- * if it haven't been found, the presenter should end with 404 error.
- */
- public function actionEdit($id)
- {
- if (!$this->pad) {
- $this->error();
- }
- }
-
-
-
- /**
- * Since the pad is required for the delete,
- * if it haven't been found, the presenter should end with 404 error.
- */
- public function actionDelete($id)
- {
- if (!$this->pad) {
- $this->error();
- }
- }
-
-
-
- /**
- * Factory method for subcomponent form instance.
- * This factory is called internally by Nette in the component model.
- *
- * This factory creates a ConfirmationControl,
- * that calls the onConfirm event if user clicks on the button.
- *
- * @return \Notejam\Components\ConfirmationControl
- */
- protected function createComponentDeletePad()
- {
- if ($this->action !== 'delete') {
- $this->error();
- }
-
- $control = $this->confirmationControlFactory->create();
- $control->onConfirm[] = function () {
- $this->em->remove($this->pad);
- $this->em->flush();
- $this->flashMessage('The pad has been deleted', 'success');
- $this->redirect('Note:');
- };
-
- return $control;
- }
-
-
-
- /**
- * Factory method for subcomponent form instance.
- * This factory is called internally by Nette in the component model.
- *
- * This factory creates a PadsControl that handles creation of new pads.
- *
- * @return \Notejam\Components\PadsControl
- * @throws Nette\Application\BadRequestException
- */
- protected function createComponentCreatePad()
- {
- if ($this->action !== 'create') {
- $this->error();
- }
-
- $control = $this->padsControlFactory->create();
- $control->onSuccess[] = function ($control, Pad $createdPad) {
- $this->flashMessage('New pad has been created', 'success');
- $this->redirect('Pad:detail', ['id' => $createdPad->getId()]);
- };
-
- return $control;
- }
-
-
-
- /**
- * Factory method for subcomponent form instance.
- * This factory is called internally by Nette in the component model.
- *
- * This factory creates a PadsControl that handles edit of existing pads.
- *
- * @return \Notejam\Components\PadsControl
- * @throws Nette\Application\BadRequestException
- */
- protected function createComponentEditPad()
- {
- if ($this->action !== 'edit' || !$this->pad) {
- $this->error();
- }
-
- $control = $this->padsControlFactory->create();
- $control->setPad($this->pad);
- $control->onSuccess[] = function () {
- $this->flashMessage('Pad has been edited', 'success');
- $this->redirect('Pad:detail', ['id' => $this->pad->getId()]);
- };
-
- return $control;
- }
-
-}
diff --git a/nette/doctrine/notejam/app/Presenters/UserPresenter.php b/nette/doctrine/notejam/app/Presenters/UserPresenter.php
deleted file mode 100644
index 03cfe6e34..000000000
--- a/nette/doctrine/notejam/app/Presenters/UserPresenter.php
+++ /dev/null
@@ -1,145 +0,0 @@
-user->logout(TRUE);
- $this->flashMessage("You've been logged out.", 'success');
- $this->redirect('User:signIn');
- }
-
-
-
- /**
- * This method is here only for the user annotation, that creates a protected section of app.
- * Meaning that if you try to access this action when you're not logged in, you'll be redirected to login form page.
- *
- * @User()
- */
- public function actionSettings()
- {
-
- }
-
-
-
- /**
- * Factory method for subcomponent form instance.
- * This factory is called internally by Nette in the component model.
- *
- * @return \Notejam\Components\SignInControl
- */
- protected function createComponentSignIn()
- {
- $control = $this->signInFormFactory->create();
- $control->onSuccess[] = function () {
- $this->redirect('Note:');
- };
-
- return $control;
- }
-
-
-
- /**
- * Factory method for subcomponent form instance.
- * This factory is called internally by Nette in the component model.
- *
- * @return \Notejam\Components\SignUpControl
- */
- protected function createComponentSignUp()
- {
- $control = $this->signUpFormFactory->create();
- $control->onSuccess[] = function () {
- $this->flashMessage('Thank you for registration. Now you can sign in', 'success');
- $this->redirect('User:signIn');
- };
-
- return $control;
- }
-
-
-
- /**
- * Factory method for subcomponent form instance.
- * This factory is called internally by Nette in the component model.
- *
- * @return \Notejam\Components\SettingsControl
- * @throws Nette\Application\BadRequestException
- */
- protected function createComponentSettings()
- {
- if ($this->action !== 'settings') {
- $this->error();
- }
-
- $control = $this->settingsControlFactory->create();
- $control->onSuccess[] = function () {
- $this->flashMessage('The password has been changed', 'success');
- $this->redirect('Note:');
- };
-
- return $control;
- }
-
-
-
- /**
- * Factory method for subcomponent form instance.
- * This factory is called internally by Nette in the component model.
- *
- * @return \Notejam\Components\ForgottenPasswordControl
- */
- protected function createComponentForgottenPassword()
- {
- $control = $this->forgottenPasswordControlFactory->create();
- $control->onSuccess[] = function () {
- $this->flashMessage('New password sent to your inbox', 'success');
- $this->redirect('User:signIn');
- };
-
- return $control;
- }
-
-}
diff --git a/nette/doctrine/notejam/app/Presenters/templates/@layout.latte b/nette/doctrine/notejam/app/Presenters/templates/@layout.latte
deleted file mode 100644
index 8dd37f71f..000000000
--- a/nette/doctrine/notejam/app/Presenters/templates/@layout.latte
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
-
-
-
-
-
- {ifset title}{include title|striptags}{else}Notejam{/ifset}
-
-
-
-
-
-
- {block stylesheets}
-
-
-
-
-
-
-
- {/block}
-
-
-
-
-
-
-
- {block pads}
- {control padsList}
- {/block}
-
-
- {block body}{/block}
-
-
-
-
-
- {block javascripts}
-
- {/block}
-
-
diff --git a/nette/doctrine/notejam/app/Presenters/templates/@user.latte b/nette/doctrine/notejam/app/Presenters/templates/@user.latte
deleted file mode 100644
index 2b72e3db8..000000000
--- a/nette/doctrine/notejam/app/Presenters/templates/@user.latte
+++ /dev/null
@@ -1,5 +0,0 @@
-{extends '@layout.latte'}
-
-{block content_class}sixteen columns content-area{/block}
-
-{block pads}{/block}
diff --git a/nette/doctrine/notejam/app/Presenters/templates/Error/403.latte b/nette/doctrine/notejam/app/Presenters/templates/Error/403.latte
deleted file mode 100644
index 25c24ab3c..000000000
--- a/nette/doctrine/notejam/app/Presenters/templates/Error/403.latte
+++ /dev/null
@@ -1,7 +0,0 @@
-{block body}
-Access Denied
-
-You do not have permission to view this page. Please try contact the web
-site administrator if you believe you should be able to view this page.
-
-error 403
diff --git a/nette/doctrine/notejam/app/Presenters/templates/Error/404.latte b/nette/doctrine/notejam/app/Presenters/templates/Error/404.latte
deleted file mode 100644
index d0a09f2a3..000000000
--- a/nette/doctrine/notejam/app/Presenters/templates/Error/404.latte
+++ /dev/null
@@ -1,8 +0,0 @@
-{block body}
-Page Not Found
-
-The page you requested could not be found. It is possible that the address is
-incorrect, or that the page no longer exists. Please use a search engine to find
-what you are looking for.
-
-error 404
diff --git a/nette/doctrine/notejam/app/Presenters/templates/Error/405.latte b/nette/doctrine/notejam/app/Presenters/templates/Error/405.latte
deleted file mode 100644
index 28192d2ff..000000000
--- a/nette/doctrine/notejam/app/Presenters/templates/Error/405.latte
+++ /dev/null
@@ -1,6 +0,0 @@
-{block body}
-Method Not Allowed
-
-The requested method is not allowed for the URL.
-
-error 405
diff --git a/nette/doctrine/notejam/app/Presenters/templates/Error/410.latte b/nette/doctrine/notejam/app/Presenters/templates/Error/410.latte
deleted file mode 100644
index b81f19b68..000000000
--- a/nette/doctrine/notejam/app/Presenters/templates/Error/410.latte
+++ /dev/null
@@ -1,6 +0,0 @@
-{block body}
-Page Not Found
-
-The page you requested has been taken off the site. We apologize for the inconvenience.
-
-error 410
diff --git a/nette/doctrine/notejam/app/Presenters/templates/Error/4xx.latte b/nette/doctrine/notejam/app/Presenters/templates/Error/4xx.latte
deleted file mode 100644
index d084ed723..000000000
--- a/nette/doctrine/notejam/app/Presenters/templates/Error/4xx.latte
+++ /dev/null
@@ -1,4 +0,0 @@
-{block body}
-Oops...
-
-Your browser sent a request that this server could not understand or process.
diff --git a/nette/doctrine/notejam/app/Presenters/templates/Error/500.phtml b/nette/doctrine/notejam/app/Presenters/templates/Error/500.phtml
deleted file mode 100644
index 619611eac..000000000
--- a/nette/doctrine/notejam/app/Presenters/templates/Error/500.phtml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-Server Error
-
-
-
-
-
Server Error
-
-
We're sorry! The server encountered an internal error and
- was unable to complete your request. Please try again later.
-
-
error 500
-
diff --git a/nette/doctrine/notejam/app/Presenters/templates/Note/create.latte b/nette/doctrine/notejam/app/Presenters/templates/Note/create.latte
deleted file mode 100644
index c43128571..000000000
--- a/nette/doctrine/notejam/app/Presenters/templates/Note/create.latte
+++ /dev/null
@@ -1,8 +0,0 @@
-{block title}New note{/block}
-{block page_title}New note {/block}
-
-{block body}
-
- {control $form ownerrors}
- {control $form body}
-
diff --git a/nette/doctrine/notejam/app/Presenters/templates/Note/default.latte b/nette/doctrine/notejam/app/Presenters/templates/Note/default.latte
deleted file mode 100644
index 5863a25e0..000000000
--- a/nette/doctrine/notejam/app/Presenters/templates/Note/default.latte
+++ /dev/null
@@ -1,36 +0,0 @@
-{block title}All notes ({$notes|length}){/block}
-{block page_title}All notes ({$notes|length}) {/block}
-
-{block body}
-
-
-
- Note
- ↑
- ↓
-
- Pad
-
- Last modified
- ↑
- ↓
-
-
-
- {$note->name}
-
- {if $note->pad}
- {$note->pad}
- {else}
- No pad
- {/if}
-
- {$note->updatedAt|date:'d M. Y'}
-
-
-
-{if !$iterations}
- Create your first note.
-{/if}
-
-New note
diff --git a/nette/doctrine/notejam/app/Presenters/templates/Note/delete.latte b/nette/doctrine/notejam/app/Presenters/templates/Note/delete.latte
deleted file mode 100644
index 8b552f369..000000000
--- a/nette/doctrine/notejam/app/Presenters/templates/Note/delete.latte
+++ /dev/null
@@ -1,9 +0,0 @@
-{block title}Delete note {$note->name}{/block}
-{block page_title}Delete note {$note->name} {/block}
-
-{block body}
-
- Are you sure you want to delete {$note->name}?
- Yes, I want to delete this note
- Cancel
-
diff --git a/nette/doctrine/notejam/app/Presenters/templates/Note/detail.latte b/nette/doctrine/notejam/app/Presenters/templates/Note/detail.latte
deleted file mode 100644
index 8c2409094..000000000
--- a/nette/doctrine/notejam/app/Presenters/templates/Note/detail.latte
+++ /dev/null
@@ -1,10 +0,0 @@
-{block title}{$note->name}{/block}
-{block page_title}{$note->name} {/block}
-
-{block body}
- Last edited at {$note->updatedAt->format('H:i')}
-
- {$note->text|escape|nl2br|noescape}
-
- Edit
- Delete it
diff --git a/nette/doctrine/notejam/app/Presenters/templates/Note/edit.latte b/nette/doctrine/notejam/app/Presenters/templates/Note/edit.latte
deleted file mode 100644
index 906bb35df..000000000
--- a/nette/doctrine/notejam/app/Presenters/templates/Note/edit.latte
+++ /dev/null
@@ -1,8 +0,0 @@
-{block title}{$note->name}{/block}
-{block page_title}{$note->name} {/block}
-
-{block body}
-
- {control $form ownerrors}
- {control $form body}
-
diff --git a/nette/doctrine/notejam/app/Presenters/templates/Pad/create.latte b/nette/doctrine/notejam/app/Presenters/templates/Pad/create.latte
deleted file mode 100644
index 1d446a09e..000000000
--- a/nette/doctrine/notejam/app/Presenters/templates/Pad/create.latte
+++ /dev/null
@@ -1,5 +0,0 @@
-{block title}New pad{/block}
-{block page_title}New pad {/block}
-
-{block body}
- {control createPad-form}
diff --git a/nette/doctrine/notejam/app/Presenters/templates/Pad/delete.latte b/nette/doctrine/notejam/app/Presenters/templates/Pad/delete.latte
deleted file mode 100644
index 9b842beb1..000000000
--- a/nette/doctrine/notejam/app/Presenters/templates/Pad/delete.latte
+++ /dev/null
@@ -1,9 +0,0 @@
-{block title}Delete pad {$pad->name}{/block}
-{block page_title}Delete pad {$pad->name} {/block}
-
-{block body}
-
- Are you sure you want to delete {$pad->name}?
- Yes, I want to delete this pad
- Cancel
-
diff --git a/nette/doctrine/notejam/app/Presenters/templates/Pad/detail.latte b/nette/doctrine/notejam/app/Presenters/templates/Pad/detail.latte
deleted file mode 100644
index b8f233d17..000000000
--- a/nette/doctrine/notejam/app/Presenters/templates/Pad/detail.latte
+++ /dev/null
@@ -1,37 +0,0 @@
-{block title}{$pad->name} ({$notes|length} notes){/block}
-{block page_title}{$pad->name} ({$notes|length}) {/block}
-
-{block body}
-
-
-
- Note
- ↑
- ↓
-
- Pad
-
- Last modified
- ↑
- ↓
-
-
-
- {$note->name}
-
- {if $note->pad}
- {$note->pad}
- {else}
- No pad
- {/if}
-
- {$note->updatedAt|date:'d M. Y'}
-
-
-
-{if !$iterations}
- Create first note in the pad
-{/if}
-
-New note
-Pad settings
diff --git a/nette/doctrine/notejam/app/Presenters/templates/Pad/edit.latte b/nette/doctrine/notejam/app/Presenters/templates/Pad/edit.latte
deleted file mode 100644
index 6448a3c4e..000000000
--- a/nette/doctrine/notejam/app/Presenters/templates/Pad/edit.latte
+++ /dev/null
@@ -1,6 +0,0 @@
-{block title}{$pad->name}{/block}
-{block page_title}{$pad->name} {/block}
-
-{block body}
- {control editPad-form}
- Delete pad
diff --git a/nette/doctrine/notejam/app/Presenters/templates/User/forgottenPassword.latte b/nette/doctrine/notejam/app/Presenters/templates/User/forgottenPassword.latte
deleted file mode 100644
index e9ab4b29b..000000000
--- a/nette/doctrine/notejam/app/Presenters/templates/User/forgottenPassword.latte
+++ /dev/null
@@ -1,10 +0,0 @@
-{extends '../@user.latte'}
-
-{block title}Forgot Password?{/block}
-{block page_title}Forgot Password? {/block}
-
-{block body}
-
- {control $form ownErrors}
- {control $form body}
-
diff --git a/nette/doctrine/notejam/app/Presenters/templates/User/settings.latte b/nette/doctrine/notejam/app/Presenters/templates/User/settings.latte
deleted file mode 100644
index a33ed1173..000000000
--- a/nette/doctrine/notejam/app/Presenters/templates/User/settings.latte
+++ /dev/null
@@ -1,10 +0,0 @@
-{extends '../@user.latte'}
-
-{block title}Account Settings{/block}
-{block page_title}Account Settings {/block}
-
-{block body}
-
- {control $form ownerrors}
- {control $form body}
-
diff --git a/nette/doctrine/notejam/app/Presenters/templates/User/signIn.latte b/nette/doctrine/notejam/app/Presenters/templates/User/signIn.latte
deleted file mode 100644
index a8f4e16e7..000000000
--- a/nette/doctrine/notejam/app/Presenters/templates/User/signIn.latte
+++ /dev/null
@@ -1,21 +0,0 @@
-{extends '../@user.latte'}
-
-{block title}Sign In{/block}
-{block page_title}Sign In {/block}
-
-{block body}
-
- {control $form errors}
-
- Email
-
-
- Password
-
-
- Sign in
- or Sign up
-
-
- Forgot Password?
-
diff --git a/nette/doctrine/notejam/app/Presenters/templates/User/signUp.latte b/nette/doctrine/notejam/app/Presenters/templates/User/signUp.latte
deleted file mode 100644
index 5b91bc2b9..000000000
--- a/nette/doctrine/notejam/app/Presenters/templates/User/signUp.latte
+++ /dev/null
@@ -1,20 +0,0 @@
-{extends '../@user.latte'}
-
-{block title}Sign Up{/block}
-{block page_title}Sign Up {/block}
-
-{block body}
-
- {control $form errors}
-
- Email
-
-
- Password
-
-
- Confirm
-
-
- Sign up
-
diff --git a/nette/doctrine/notejam/app/bootstrap.php b/nette/doctrine/notejam/app/bootstrap.php
deleted file mode 100644
index 8fd851263..000000000
--- a/nette/doctrine/notejam/app/bootstrap.php
+++ /dev/null
@@ -1,21 +0,0 @@
-setDebugMode('23.75.345.200'); // enable for your remote IP
-$configurator->enableDebugger(__DIR__ . '/../log');
-
-$configurator->setTempDirectory(__DIR__ . '/../temp');
-
-$configurator->createRobotLoader()
- ->addDirectory(__DIR__)
- ->register();
-
-$configurator->addConfig(__DIR__ . '/config/config.neon');
-$configurator->addConfig(__DIR__ . '/config/config.local.neon');
-
-$container = $configurator->createContainer();
-
-return $container;
diff --git a/nette/doctrine/notejam/app/config/config.local.example.neon b/nette/doctrine/notejam/app/config/config.local.example.neon
deleted file mode 100644
index 8ef3ce85f..000000000
--- a/nette/doctrine/notejam/app/config/config.local.example.neon
+++ /dev/null
@@ -1,2 +0,0 @@
-# copy me to config.local.neon
-parameters:
diff --git a/nette/doctrine/notejam/app/config/config.neon b/nette/doctrine/notejam/app/config/config.neon
deleted file mode 100644
index 63a9977a2..000000000
--- a/nette/doctrine/notejam/app/config/config.neon
+++ /dev/null
@@ -1,42 +0,0 @@
-# WARNING: it is CRITICAL that this file & directory are NOT accessible directly via a web browser!
-# https://nette.org/security-warning
-
-parameters:
- srcDir: %appDir%/../src
-
-
-php:
- date.timezone: Europe/Prague
-
-
-extensions:
- console: Kdyby\Console\DI\ConsoleExtension
- events: Kdyby\Events\DI\EventsExtension
- annotations: Kdyby\Annotations\DI\AnnotationsExtension
- doctrine: Kdyby\Doctrine\DI\OrmExtension
- doctrine2identity: Majkl578\NetteAddons\Doctrine2Identity\DI\IdentityExtension
-
-
-application:
- errorPresenter: Error
- mapping:
- *: Notejam\*Module\Presenters\*Presenter
-
-
-session:
- expiration: 14 days
-
-
-doctrine:
- driver: pdo_sqlite
- path: %appDir%/../notejam.db
- metadata:
- Notejam: %srcDir%/Notejam
-
-
-events:
- debugger: off
-
-
-includes:
- - services.neon
diff --git a/nette/doctrine/notejam/app/config/services.neon b/nette/doctrine/notejam/app/config/services.neon
deleted file mode 100644
index 4a04010a4..000000000
--- a/nette/doctrine/notejam/app/config/services.neon
+++ /dev/null
@@ -1,21 +0,0 @@
-services:
- router: Notejam\Http\RouterFactory::createRouter
- security.authenticator: Notejam\Users\Authenticator
-
- latte.latteFactory:
- setup:
- - addFilter(length, 'Notejam\Templating\RuntimeFilters::length')
-
- - Notejam\UI\FormFactory
- - Notejam\Components\ISignInControlFactory
- - Notejam\Components\ISignUpControlFactory
- - Notejam\Components\INoteControlFactory
- - Notejam\Components\IPadsControlFactory
- - Notejam\Components\ISettingsControlFactory
- - Notejam\Components\PadsList\IPadsListControlFactory
- - Notejam\Components\IForgottenPasswordControlFactory
- - Notejam\Components\IConfirmationControlFactory
-
- - Notejam\Notes\NoteRepository
- - Notejam\Pads\PadRepository
- - Notejam\Users\UserRepository
diff --git a/nette/doctrine/notejam/codeception.yml b/nette/doctrine/notejam/codeception.yml
deleted file mode 100644
index 15019d00a..000000000
--- a/nette/doctrine/notejam/codeception.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-actor: Tester
-paths:
- tests: tests
- log: tests/_output
- data: tests/_data
- support: tests/_support
- envs: tests/_envs
-settings:
- bootstrap: _bootstrap.php
- colors: true
- memory_limit: 1024M
-extensions:
- enabled:
- - Codeception\Extension\RunFailed
-modules:
- config:
- Db:
- dsn: 'sqlite:notejam.db'
- user:
- password:
- dump: tests/_data/dump.sql
- populate: true
- cleanup: true
diff --git a/nette/doctrine/notejam/composer.json b/nette/doctrine/notejam/composer.json
deleted file mode 100644
index 6edba100b..000000000
--- a/nette/doctrine/notejam/composer.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "name": "nette/web-project",
- "description": "Nette: Standard Web Project",
- "type": "project",
- "license": ["MIT", "BSD-3-Clause", "GPL-2.0", "GPL-3.0"],
- "require": {
- "php": ">= 5.4.0",
- "nette/application": "~2.3.6",
- "nette/bootstrap": "~2.3.0",
- "nette/caching": "~2.3.0",
- "nette/di": "~2.3.0",
- "nette/finder": "~2.3.0",
- "nette/forms": "~2.3.0",
- "nette/http": "~2.3.0",
- "nette/mail": "~2.3.0",
- "nette/robot-loader": "~2.3.0",
- "nette/safe-stream": "~2.3.0",
- "nette/security": "~2.3.0",
- "nette/utils": "~2.3.0",
- "latte/latte": "~2.3.0",
- "tracy/tracy": "~2.3.0",
- "nextras/static-router": "^1.0",
- "kdyby/doctrine": "^3.0",
- "majkl578/nette-identity-doctrine": "~2.3@rc"
- },
- "autoload": {
- "classmap": [
- "app/",
- "src/Notejam/exceptions.php"
- ],
- "psr-4": {
- "Notejam\\": "src/Notejam"
- }
- },
- "require-dev": {
- "nette/tester": "~1.4",
- "codeception/codeception": "^2.0"
- }
-}
diff --git a/nette/doctrine/notejam/composer.lock b/nette/doctrine/notejam/composer.lock
deleted file mode 100644
index 42880c42d..000000000
--- a/nette/doctrine/notejam/composer.lock
+++ /dev/null
@@ -1,3754 +0,0 @@
-{
- "_readme": [
- "This file locks the dependencies of your project to a known state",
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
- "This file is @generated automatically"
- ],
- "hash": "99a26131a249a67fdc54e59ec1add7b2",
- "content-hash": "bb5d12a2b59bf82f1fd5ad6e2252efce",
- "packages": [
- {
- "name": "doctrine/annotations",
- "version": "v1.2.7",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/annotations.git",
- "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535",
- "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535",
- "shasum": ""
- },
- "require": {
- "doctrine/lexer": "1.*",
- "php": ">=5.3.2"
- },
- "require-dev": {
- "doctrine/cache": "1.*",
- "phpunit/phpunit": "4.*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Doctrine\\Common\\Annotations\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "Docblock Annotations Parser",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "annotations",
- "docblock",
- "parser"
- ],
- "time": "2015-08-31 12:32:49"
- },
- {
- "name": "doctrine/cache",
- "version": "v1.5.1",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/cache.git",
- "reference": "2b9cec5a5e722010cbebc91713d4c11eaa064d5e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/cache/zipball/2b9cec5a5e722010cbebc91713d4c11eaa064d5e",
- "reference": "2b9cec5a5e722010cbebc91713d4c11eaa064d5e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.2"
- },
- "conflict": {
- "doctrine/common": ">2.2,<2.4"
- },
- "require-dev": {
- "phpunit/phpunit": ">=3.7",
- "predis/predis": "~1.0",
- "satooshi/php-coveralls": "~0.6"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.5.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "Caching library offering an object-oriented API for many cache backends",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "cache",
- "caching"
- ],
- "time": "2015-11-02 18:35:48"
- },
- {
- "name": "doctrine/collections",
- "version": "v1.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/collections.git",
- "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/collections/zipball/6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
- "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Doctrine\\Common\\Collections\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "Collections Abstraction library",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "array",
- "collections",
- "iterator"
- ],
- "time": "2015-04-14 22:21:58"
- },
- {
- "name": "doctrine/common",
- "version": "v2.5.1",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/common.git",
- "reference": "0009b8f0d4a917aabc971fb089eba80e872f83f9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/common/zipball/0009b8f0d4a917aabc971fb089eba80e872f83f9",
- "reference": "0009b8f0d4a917aabc971fb089eba80e872f83f9",
- "shasum": ""
- },
- "require": {
- "doctrine/annotations": "1.*",
- "doctrine/cache": "1.*",
- "doctrine/collections": "1.*",
- "doctrine/inflector": "1.*",
- "doctrine/lexer": "1.*",
- "php": ">=5.3.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~3.7"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.6.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Doctrine\\Common\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "Common Library for Doctrine projects",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "annotations",
- "collections",
- "eventmanager",
- "persistence",
- "spl"
- ],
- "time": "2015-08-31 13:00:22"
- },
- {
- "name": "doctrine/dbal",
- "version": "v2.5.2",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/dbal.git",
- "reference": "01dbcbc5cd0a913d751418e635434a18a2f2a75c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/01dbcbc5cd0a913d751418e635434a18a2f2a75c",
- "reference": "01dbcbc5cd0a913d751418e635434a18a2f2a75c",
- "shasum": ""
- },
- "require": {
- "doctrine/common": ">=2.4,<2.6-dev",
- "php": ">=5.3.2"
- },
- "require-dev": {
- "phpunit/phpunit": "4.*",
- "symfony/console": "2.*"
- },
- "suggest": {
- "symfony/console": "For helpful console commands such as SQL execution and import of files."
- },
- "bin": [
- "bin/doctrine-dbal"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.5.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Doctrine\\DBAL\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- }
- ],
- "description": "Database Abstraction Layer",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "database",
- "dbal",
- "persistence",
- "queryobject"
- ],
- "time": "2015-09-16 16:29:33"
- },
- {
- "name": "doctrine/inflector",
- "version": "v1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/inflector.git",
- "reference": "90b2128806bfde671b6952ab8bea493942c1fdae"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae",
- "reference": "90b2128806bfde671b6952ab8bea493942c1fdae",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.2"
- },
- "require-dev": {
- "phpunit/phpunit": "4.*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Doctrine\\Common\\Inflector\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "Common String Manipulations with regard to casing and singular/plural rules.",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "inflection",
- "pluralize",
- "singularize",
- "string"
- ],
- "time": "2015-11-06 14:35:42"
- },
- {
- "name": "doctrine/instantiator",
- "version": "1.0.5",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/instantiator.git",
- "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
- "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3,<8.0-DEV"
- },
- "require-dev": {
- "athletic/athletic": "~0.1.8",
- "ext-pdo": "*",
- "ext-phar": "*",
- "phpunit/phpunit": "~4.0",
- "squizlabs/php_codesniffer": "~2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com",
- "homepage": "http://ocramius.github.com/"
- }
- ],
- "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
- "homepage": "https://github.com/doctrine/instantiator",
- "keywords": [
- "constructor",
- "instantiate"
- ],
- "time": "2015-06-14 21:17:01"
- },
- {
- "name": "doctrine/lexer",
- "version": "v1.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/lexer.git",
- "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c",
- "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Doctrine\\Common\\Lexer\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "lexer",
- "parser"
- ],
- "time": "2014-09-09 13:34:57"
- },
- {
- "name": "doctrine/orm",
- "version": "v2.5.2",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/doctrine2.git",
- "reference": "464b5fdbfbbeb4a65465ac173c4c5d90960f41ff"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/464b5fdbfbbeb4a65465ac173c4c5d90960f41ff",
- "reference": "464b5fdbfbbeb4a65465ac173c4c5d90960f41ff",
- "shasum": ""
- },
- "require": {
- "doctrine/cache": "~1.4",
- "doctrine/collections": "~1.2",
- "doctrine/common": ">=2.5-dev,<2.6-dev",
- "doctrine/dbal": ">=2.5-dev,<2.6-dev",
- "doctrine/instantiator": "~1.0.1",
- "ext-pdo": "*",
- "php": ">=5.4",
- "symfony/console": "~2.5|~3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0",
- "satooshi/php-coveralls": "dev-master",
- "symfony/yaml": "~2.3|~3.0"
- },
- "suggest": {
- "symfony/yaml": "If you want to use YAML Metadata Mapping Driver"
- },
- "bin": [
- "bin/doctrine",
- "bin/doctrine.php"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.6.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Doctrine\\ORM\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- }
- ],
- "description": "Object-Relational-Mapper for PHP",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "database",
- "orm"
- ],
- "time": "2015-11-23 12:44:25"
- },
- {
- "name": "kdyby/annotations",
- "version": "v2.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/Kdyby/Annotations.git",
- "reference": "36cb90e8a28c1f9a23a5c351af2449139c21229d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Kdyby/Annotations/zipball/36cb90e8a28c1f9a23a5c351af2449139c21229d",
- "reference": "36cb90e8a28c1f9a23a5c351af2449139c21229d",
- "shasum": ""
- },
- "require": {
- "doctrine/annotations": "~1.2",
- "kdyby/doctrine-cache": "~2.4@dev",
- "nette/di": "~2.3@dev",
- "nette/utils": "~2.3@dev"
- },
- "conflict": {
- "kdyby/doctrine": "0.9.*"
- },
- "require-dev": {
- "latte/latte": "~2.3@dev",
- "nette/application": "~2.3@dev",
- "nette/bootstrap": "~2.3@dev",
- "nette/caching": "~2.3@dev",
- "nette/component-model": "~2.2@dev",
- "nette/database": "~2.3@dev",
- "nette/deprecated": "~2.3@dev",
- "nette/di": "~2.3@dev",
- "nette/finder": "~2.3@dev",
- "nette/forms": "~2.3@dev",
- "nette/http": "~2.3@dev",
- "nette/mail": "~2.3@dev",
- "nette/neon": "~2.3@dev",
- "nette/php-generator": "~2.3@dev",
- "nette/reflection": "~2.3@dev",
- "nette/robot-loader": "~2.3@dev",
- "nette/safe-stream": "~2.3@dev",
- "nette/security": "~2.3@dev",
- "nette/tester": "~1.3@rc",
- "nette/tokenizer": "~2.2@dev",
- "nette/utils": "~2.3@dev",
- "tracy/tracy": "~2.3@dev"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.2-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Kdyby\\Annotations\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "Filip Procházka",
- "email": "filip@prochazka.su",
- "homepage": "http://filip-prochazka.com"
- },
- {
- "name": "Jáchym Toušek",
- "email": "enumag@gmail.com",
- "homepage": "http://enumag.cz"
- }
- ],
- "description": "Doctrine Annotations integration into Nette Framework",
- "homepage": "http://kdyby.org",
- "keywords": [
- "annotations",
- "doctrine",
- "kdyby",
- "nette"
- ],
- "time": "2015-10-30 21:04:27"
- },
- {
- "name": "kdyby/console",
- "version": "v2.5.0",
- "source": {
- "type": "git",
- "url": "https://github.com/Kdyby/Console.git",
- "reference": "50e9f6ce4db18628d01724d5085d8056056eb9cb"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Kdyby/Console/zipball/50e9f6ce4db18628d01724d5085d8056056eb9cb",
- "reference": "50e9f6ce4db18628d01724d5085d8056056eb9cb",
- "shasum": ""
- },
- "require": {
- "nette/application": "~2.3@dev",
- "nette/di": "~2.3@dev",
- "nette/http": "~2.3@dev",
- "symfony/console": "~2.3"
- },
- "require-dev": {
- "kdyby/events": "~2.4@dev",
- "latte/latte": "~2.3@dev",
- "nette/application": "~2.3@dev",
- "nette/bootstrap": "~2.3@dev",
- "nette/caching": "~2.3@dev",
- "nette/component-model": "~2.2@dev",
- "nette/database": "~2.3@dev",
- "nette/deprecated": "~2.3@dev",
- "nette/di": "~2.3@dev",
- "nette/finder": "~2.3@dev",
- "nette/forms": "~2.3@dev",
- "nette/http": "~2.3@dev",
- "nette/mail": "~2.3@dev",
- "nette/neon": "~2.3@dev",
- "nette/php-generator": "~2.3@dev",
- "nette/reflection": "~2.3@dev",
- "nette/robot-loader": "~2.3@dev",
- "nette/safe-stream": "~2.3@dev",
- "nette/security": "~2.3@dev",
- "nette/tester": "~1.6@rc",
- "nette/tokenizer": "~2.2@dev",
- "nette/utils": "~2.3@dev",
- "symfony/event-dispatcher": "~2.3",
- "tracy/tracy": "~2.3@dev"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.4-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Kdyby\\Console\\": "src/"
- },
- "classmap": [
- "src/Kdyby/Console/CliPresenter.php",
- "src/Kdyby/Console/exceptions.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "Filip Procházka",
- "email": "filip@prochazka.su",
- "homepage": "http://filip-prochazka.com"
- }
- ],
- "description": "Symfony Console integration for Kdyby components",
- "homepage": "http://kdyby.org",
- "keywords": [
- "console",
- "kdyby",
- "nette"
- ],
- "time": "2015-10-30 21:57:23"
- },
- {
- "name": "kdyby/doctrine",
- "version": "v3.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/Kdyby/Doctrine.git",
- "reference": "69c63fe943d1fade98d8879a9e3aa8fc9e7b5c4b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Kdyby/Doctrine/zipball/69c63fe943d1fade98d8879a9e3aa8fc9e7b5c4b",
- "reference": "69c63fe943d1fade98d8879a9e3aa8fc9e7b5c4b",
- "shasum": ""
- },
- "require": {
- "doctrine/dbal": "~2.5",
- "doctrine/orm": "~2.5",
- "kdyby/annotations": "~2.3@dev",
- "kdyby/console": "~2.5@dev",
- "kdyby/doctrine-cache": "~2.5@dev",
- "kdyby/events": "~3.0@dev",
- "nette/di": "~2.3@dev",
- "nette/neon": "~2.3@dev",
- "nette/robot-loader": "~2.3@dev",
- "nette/utils": "~2.3@dev"
- },
- "require-dev": {
- "dg/dibi": "~2.0",
- "latte/latte": "~2.3@dev",
- "nette/application": "~2.3@dev",
- "nette/bootstrap": "~2.3@dev",
- "nette/caching": "~2.3@dev",
- "nette/component-model": "~2.2@dev",
- "nette/database": "~2.3@dev",
- "nette/deprecated": "~2.2@dev",
- "nette/di": "~2.3@dev",
- "nette/finder": "~2.3@dev",
- "nette/forms": "~2.3@dev",
- "nette/http": "~2.3@dev",
- "nette/mail": "~2.3@dev",
- "nette/neon": "~2.3@dev",
- "nette/php-generator": "~2.3@dev",
- "nette/reflection": "~2.3@dev",
- "nette/robot-loader": "~2.3@dev",
- "nette/safe-stream": "~2.3@dev",
- "nette/security": "~2.3@dev",
- "nette/tester": "~1.3@rc",
- "nette/tokenizer": "~2.2@dev",
- "nette/utils": "~2.3@dev",
- "tracy/tracy": "~2.3@dev"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Kdyby\\Doctrine\\": "src/",
- "Kdyby\\Persistence\\": "src/",
- "Kdyby\\DibiBridge\\": "src/"
- },
- "classmap": [
- "src/Kdyby/Doctrine/exceptions.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "Filip Procházka",
- "email": "filip@prochazka.su",
- "homepage": "http://filip-prochazka.com"
- }
- ],
- "description": "Doctrine integration into Nette Framework",
- "homepage": "http://kdyby.org",
- "keywords": [
- "dbal",
- "doctrine",
- "kdyby",
- "nette",
- "orm"
- ],
- "time": "2015-11-14 14:11:04"
- },
- {
- "name": "kdyby/doctrine-cache",
- "version": "v2.5.0",
- "source": {
- "type": "git",
- "url": "https://github.com/Kdyby/DoctrineCache.git",
- "reference": "01a55db5ab0e0892c77a7f6fa9ea0022dabb9440"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Kdyby/DoctrineCache/zipball/01a55db5ab0e0892c77a7f6fa9ea0022dabb9440",
- "reference": "01a55db5ab0e0892c77a7f6fa9ea0022dabb9440",
- "shasum": ""
- },
- "require": {
- "doctrine/cache": "~1.5",
- "nette/caching": "~2.3@dev",
- "nette/di": "~2.3@dev",
- "php": ">=5.4"
- },
- "require-dev": {
- "latte/latte": "~2.3@dev",
- "nette/application": "~2.3@dev",
- "nette/bootstrap": "~2.3@dev",
- "nette/caching": "~2.3@dev",
- "nette/component-model": "~2.2@dev",
- "nette/database": "~2.3@dev",
- "nette/deprecated": "~2.3@dev",
- "nette/di": "~2.3@dev",
- "nette/finder": "~2.3@dev",
- "nette/forms": "~2.3@dev",
- "nette/http": "~2.3@dev",
- "nette/mail": "~2.3@dev",
- "nette/neon": "~2.3@dev",
- "nette/php-generator": "~2.3@dev",
- "nette/reflection": "~2.3@dev",
- "nette/robot-loader": "~2.3@dev",
- "nette/safe-stream": "~2.3@dev",
- "nette/security": "~2.3@dev",
- "nette/tester": "~1.3@rc",
- "nette/tokenizer": "~2.2@dev",
- "nette/utils": "~2.3@dev",
- "tracy/tracy": "~2.3@dev"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.4-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Kdyby\\DoctrineCache\\": "src/"
- },
- "classmap": [
- "src/Kdyby/DoctrineCache/exceptions.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "Filip Procházka",
- "email": "filip@prochazka.su",
- "homepage": "http://filip-prochazka.com"
- }
- ],
- "description": "Doctrine Cache bridge for Nette Framework",
- "homepage": "http://kdyby.org",
- "keywords": [
- "cache",
- "doctrine",
- "kdyby",
- "nette"
- ],
- "time": "2015-10-30 20:54:56"
- },
- {
- "name": "kdyby/events",
- "version": "v3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/Kdyby/Events.git",
- "reference": "fc82cd11e3415bb3c30d661948ab6279c40caa04"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Kdyby/Events/zipball/fc82cd11e3415bb3c30d661948ab6279c40caa04",
- "reference": "fc82cd11e3415bb3c30d661948ab6279c40caa04",
- "shasum": ""
- },
- "require": {
- "nette/di": "~2.3@dev",
- "nette/utils": "~2.3@dev"
- },
- "require-dev": {
- "latte/latte": "~2.3@dev",
- "nette/application": "~2.3@dev",
- "nette/bootstrap": "~2.3@dev",
- "nette/caching": "~2.3@dev",
- "nette/component-model": "~2.2@dev",
- "nette/database": "~2.3@dev",
- "nette/deprecated": "~2.3@dev",
- "nette/di": "~2.3@dev",
- "nette/finder": "~2.3@dev",
- "nette/forms": "~2.3@dev",
- "nette/http": "~2.3@dev",
- "nette/mail": "~2.3@dev",
- "nette/neon": "~2.3@dev",
- "nette/php-generator": "~2.3@dev",
- "nette/reflection": "~2.3@dev",
- "nette/robot-loader": "~2.3@dev",
- "nette/safe-stream": "~2.3@dev",
- "nette/security": "~2.3@dev",
- "nette/tester": "~1.4",
- "nette/tokenizer": "~2.2@dev",
- "nette/utils": "~2.3@dev",
- "symfony/event-dispatcher": "~2.3",
- "tracy/tracy": "~2.3@dev"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.4-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Kdyby\\Events\\": "src/"
- },
- "classmap": [
- "src/Kdyby/Events/exceptions.php"
- ],
- "files": [
- "src/Doctrine/compatibility.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "Filip Procházka",
- "email": "filip@prochazka.su",
- "homepage": "http://filip-prochazka.com"
- }
- ],
- "description": "Events for Nette Framework",
- "homepage": "http://kdyby.org",
- "keywords": [
- "kdyby",
- "nette"
- ],
- "time": "2015-10-30 18:00:28"
- },
- {
- "name": "latte/latte",
- "version": "v2.3.7",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/latte.git",
- "reference": "b6e090e461c9cd88d60ae79a7713990b17b1531c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/latte/zipball/b6e090e461c9cd88d60ae79a7713990b17b1531c",
- "reference": "b6e090e461c9cd88d60ae79a7713990b17b1531c",
- "shasum": ""
- },
- "require": {
- "ext-tokenizer": "*",
- "php": ">=5.3.1"
- },
- "require-dev": {
- "nette/tester": "~1.3"
- },
- "suggest": {
- "ext-fileinfo": "to use filter |datastream",
- "ext-mbstring": "to use filters like lower, upper, capitalize, ..."
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "Latte: the amazing template engine for PHP",
- "homepage": "https://latte.nette.org",
- "keywords": [
- "templating",
- "twig"
- ],
- "time": "2015-11-07 22:54:05"
- },
- {
- "name": "majkl578/nette-identity-doctrine",
- "version": "v2.3-rc1",
- "source": {
- "type": "git",
- "url": "https://github.com/Majkl578/nette-identity-doctrine.git",
- "reference": "6d78821908dcf06e276b34eae7a3123d9fe1fb3a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Majkl578/nette-identity-doctrine/zipball/6d78821908dcf06e276b34eae7a3123d9fe1fb3a",
- "reference": "6d78821908dcf06e276b34eae7a3123d9fe1fb3a",
- "shasum": ""
- },
- "require": {
- "doctrine/orm": "~2.3",
- "nette/di": "~2.2",
- "nette/http": "~2.2",
- "nette/security": "~2.2",
- "php": ">=5.3.2"
- },
- "require-dev": {
- "kdyby/doctrine": "~2.0",
- "nette/bootstrap": "~2.2",
- "phpunit/phpunit": "~4.8",
- "tracy/tracy": "~2.2"
- },
- "type": "nette-addon",
- "autoload": {
- "psr-4": {
- "Majkl578\\NetteAddons\\Doctrine2Identity\\": "lib"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Moravec"
- }
- ],
- "description": "Integration of entities implementing IIdentity in Nette 2",
- "keywords": [
- "Authentication",
- "doctrine",
- "identity",
- "nette",
- "orm",
- "security"
- ],
- "time": "2015-11-27 13:47:40"
- },
- {
- "name": "nette/application",
- "version": "v2.3.7",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/application.git",
- "reference": "8e87ae81c2098abd7895bfd96d9fac1cd332abc3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/application/zipball/8e87ae81c2098abd7895bfd96d9fac1cd332abc3",
- "reference": "8e87ae81c2098abd7895bfd96d9fac1cd332abc3",
- "shasum": ""
- },
- "require": {
- "nette/component-model": "~2.2",
- "nette/http": "~2.2",
- "nette/reflection": "~2.2",
- "nette/security": "~2.2",
- "nette/utils": "~2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "latte/latte": "~2.3.0",
- "nette/di": "~2.3",
- "nette/forms": "~2.2",
- "nette/robot-loader": "~2.2",
- "nette/tester": "~1.3"
- },
- "suggest": {
- "latte/latte": "Allows using Latte in templates",
- "nette/forms": "Allows to use Nette\\Application\\UI\\Form"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "Nette Application MVC Component",
- "homepage": "https://nette.org",
- "time": "2015-10-13 14:33:28"
- },
- {
- "name": "nette/bootstrap",
- "version": "v2.3.3",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/bootstrap.git",
- "reference": "8e2db45c39a1fa24f88e94c7b2a62ad09e9a306e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/bootstrap/zipball/8e2db45c39a1fa24f88e94c7b2a62ad09e9a306e",
- "reference": "8e2db45c39a1fa24f88e94c7b2a62ad09e9a306e",
- "shasum": ""
- },
- "require": {
- "nette/di": "~2.3",
- "nette/utils": "~2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "latte/latte": "~2.2",
- "nette/application": "~2.3",
- "nette/caching": "~2.3",
- "nette/database": "~2.3",
- "nette/forms": "~2.3",
- "nette/http": "~2.3",
- "nette/mail": "~2.3",
- "nette/robot-loader": "~2.2",
- "nette/safe-stream": "~2.2",
- "nette/security": "~2.3",
- "nette/tester": "~1.3",
- "tracy/tracy": "~2.3"
- },
- "suggest": {
- "nette/robot-loader": "to use Configurator::createRobotLoader()",
- "tracy/tracy": "to use Configurator::enableDebugger()"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "http://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "http://nette.org/contributors"
- }
- ],
- "description": "Nette Bootstrap",
- "homepage": "http://nette.org",
- "time": "2015-07-11 21:07:11"
- },
- {
- "name": "nette/caching",
- "version": "v2.3.3",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/caching.git",
- "reference": "d4be13806d70c02d53b72cc63e93de6cf813f50f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/caching/zipball/d4be13806d70c02d53b72cc63e93de6cf813f50f",
- "reference": "d4be13806d70c02d53b72cc63e93de6cf813f50f",
- "shasum": ""
- },
- "require": {
- "nette/finder": "~2.2",
- "nette/utils": "~2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "latte/latte": "~2.3.0",
- "nette/di": "~2.3",
- "nette/tester": "~1.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "http://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "http://nette.org/contributors"
- }
- ],
- "description": "Nette Caching Component",
- "homepage": "http://nette.org",
- "time": "2015-07-11 21:09:42"
- },
- {
- "name": "nette/component-model",
- "version": "v2.2.4",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/component-model.git",
- "reference": "07bce436051fd92d084642ce7a47f00045e0d1e5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/component-model/zipball/07bce436051fd92d084642ce7a47f00045e0d1e5",
- "reference": "07bce436051fd92d084642ce7a47f00045e0d1e5",
- "shasum": ""
- },
- "require": {
- "nette/utils": "^2.3.5",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/tester": "~1.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "Nette Component Model",
- "homepage": "https://nette.org",
- "time": "2015-10-06 17:54:05"
- },
- {
- "name": "nette/di",
- "version": "v2.3.6",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/di.git",
- "reference": "efa1d13f016b58b4a9200802c9c5b14d10d72e85"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/di/zipball/efa1d13f016b58b4a9200802c9c5b14d10d72e85",
- "reference": "efa1d13f016b58b4a9200802c9c5b14d10d72e85",
- "shasum": ""
- },
- "require": {
- "nette/neon": "^2.3.3",
- "nette/php-generator": "^2.3.3",
- "nette/utils": "~2.3",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/tester": "~1.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "http://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "http://nette.org/contributors"
- }
- ],
- "description": "Nette Dependency Injection Component",
- "homepage": "http://nette.org",
- "time": "2015-09-14 18:18:24"
- },
- {
- "name": "nette/finder",
- "version": "v2.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/finder.git",
- "reference": "38f803a03f4cddf352e28af70294c71f7026e516"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/finder/zipball/38f803a03f4cddf352e28af70294c71f7026e516",
- "reference": "38f803a03f4cddf352e28af70294c71f7026e516",
- "shasum": ""
- },
- "require": {
- "nette/utils": "~2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/tester": "~1.4"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "http://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "http://nette.org/contributors"
- }
- ],
- "description": "Nette Finder: Files Searching",
- "homepage": "http://nette.org",
- "time": "2015-07-11 21:13:50"
- },
- {
- "name": "nette/forms",
- "version": "v2.3.6",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/forms.git",
- "reference": "5e07a7b7180e5e88db9d44e12f1677e36b4f164b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/forms/zipball/5e07a7b7180e5e88db9d44e12f1677e36b4f164b",
- "reference": "5e07a7b7180e5e88db9d44e12f1677e36b4f164b",
- "shasum": ""
- },
- "require": {
- "nette/component-model": "~2.2",
- "nette/http": "~2.2",
- "nette/utils": "~2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "latte/latte": "~2.3.2",
- "nette/di": "~2.3",
- "nette/tester": "~1.3",
- "tracy/tracy": "~2.2"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "Nette Forms: greatly facilitates web forms",
- "homepage": "https://nette.org",
- "time": "2015-10-19 01:41:55"
- },
- {
- "name": "nette/http",
- "version": "v2.3.3",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/http.git",
- "reference": "ff2e4608391bca2444df9af6eaf8666ac853eb02"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/http/zipball/ff2e4608391bca2444df9af6eaf8666ac853eb02",
- "reference": "ff2e4608391bca2444df9af6eaf8666ac853eb02",
- "shasum": ""
- },
- "require": {
- "nette/utils": "~2.2, >=2.2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/di": "~2.3",
- "nette/tester": "~1.4"
- },
- "suggest": {
- "ext-fileinfo": "to detect type of uploaded files"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "http://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "http://nette.org/contributors"
- }
- ],
- "description": "Nette HTTP Component",
- "homepage": "http://nette.org",
- "time": "2015-07-19 16:17:50"
- },
- {
- "name": "nette/mail",
- "version": "v2.3.3",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/mail.git",
- "reference": "4ea303d96c6a80ffe357baf59d387f4fe2cfd412"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/mail/zipball/4ea303d96c6a80ffe357baf59d387f4fe2cfd412",
- "reference": "4ea303d96c6a80ffe357baf59d387f4fe2cfd412",
- "shasum": ""
- },
- "require": {
- "ext-iconv": "*",
- "nette/utils": "~2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/di": "~2.3",
- "nette/tester": "~1.3"
- },
- "suggest": {
- "ext-fileinfo": "to detect type of attached files"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "Nette Mail: Sending E-mails",
- "homepage": "https://nette.org",
- "time": "2015-10-05 12:58:01"
- },
- {
- "name": "nette/neon",
- "version": "v2.3.3",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/neon.git",
- "reference": "12bbb0e85ba8521dd291f4df0fe20a1b79aae32c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/neon/zipball/12bbb0e85ba8521dd291f4df0fe20a1b79aae32c",
- "reference": "12bbb0e85ba8521dd291f4df0fe20a1b79aae32c",
- "shasum": ""
- },
- "require": {
- "ext-iconv": "*",
- "php": ">=5.3.1"
- },
- "require-dev": {
- "nette/tester": "~1.4"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "http://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "http://nette.org/contributors"
- }
- ],
- "description": "Nette NEON: parser & generator for Nette Object Notation",
- "homepage": "http://ne-on.org",
- "time": "2015-08-22 15:23:30"
- },
- {
- "name": "nette/php-generator",
- "version": "v2.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/php-generator.git",
- "reference": "846028e9d885d2d8ec60823d995e1291bbe3eb69"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/php-generator/zipball/846028e9d885d2d8ec60823d995e1291bbe3eb69",
- "reference": "846028e9d885d2d8ec60823d995e1291bbe3eb69",
- "shasum": ""
- },
- "require": {
- "nette/utils": "~2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/tester": "~1.4"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "Nette PHP Generator",
- "homepage": "https://nette.org",
- "time": "2015-10-09 14:34:13"
- },
- {
- "name": "nette/reflection",
- "version": "v2.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/reflection.git",
- "reference": "9c2ed2a29f1f58125a0f19ffc987812d6b17d3e6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/reflection/zipball/9c2ed2a29f1f58125a0f19ffc987812d6b17d3e6",
- "reference": "9c2ed2a29f1f58125a0f19ffc987812d6b17d3e6",
- "shasum": ""
- },
- "require": {
- "ext-tokenizer": "*",
- "nette/caching": "~2.2",
- "nette/utils": "~2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/di": "~2.3",
- "nette/tester": "~1.4"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "http://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "http://nette.org/contributors"
- }
- ],
- "description": "Nette PHP Reflection Component",
- "homepage": "http://nette.org",
- "time": "2015-07-11 21:34:53"
- },
- {
- "name": "nette/robot-loader",
- "version": "v2.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/robot-loader.git",
- "reference": "69331d359bbc9e5f911c12b82187cac914d983fb"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/robot-loader/zipball/69331d359bbc9e5f911c12b82187cac914d983fb",
- "reference": "69331d359bbc9e5f911c12b82187cac914d983fb",
- "shasum": ""
- },
- "require": {
- "nette/caching": "~2.2",
- "nette/finder": "~2.3",
- "nette/utils": "~2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/tester": "~1.4"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "http://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "http://nette.org/contributors"
- }
- ],
- "description": "Nette RobotLoader: comfortable autoloading",
- "homepage": "http://nette.org",
- "time": "2015-07-11 21:20:57"
- },
- {
- "name": "nette/safe-stream",
- "version": "v2.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/safe-stream.git",
- "reference": "bf30db367b51a0932c44dcb9a378927644d48b2e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/safe-stream/zipball/bf30db367b51a0932c44dcb9a378927644d48b2e",
- "reference": "bf30db367b51a0932c44dcb9a378927644d48b2e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/tester": "~1.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3-dev"
- }
- },
- "autoload": {
- "files": [
- "src/loader.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "http://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "http://nette.org/contributors"
- }
- ],
- "description": "Nette SafeStream: Atomic Operations",
- "homepage": "http://nette.org",
- "time": "2015-07-11 20:59:15"
- },
- {
- "name": "nette/security",
- "version": "v2.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/security.git",
- "reference": "744264a42b506d63009d7e3853ed72b04c99e964"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/security/zipball/744264a42b506d63009d7e3853ed72b04c99e964",
- "reference": "744264a42b506d63009d7e3853ed72b04c99e964",
- "shasum": ""
- },
- "require": {
- "nette/utils": "~2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/di": "~2.3",
- "nette/http": "~2.3",
- "nette/tester": "~1.4"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "http://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "http://nette.org/contributors"
- }
- ],
- "description": "Nette Security: Access Control Component",
- "homepage": "http://nette.org",
- "time": "2015-07-11 21:22:53"
- },
- {
- "name": "nette/utils",
- "version": "v2.3.6",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/utils.git",
- "reference": "c9dfaec788eb65d5ef10cefed0ae63bc76febaa8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/utils/zipball/c9dfaec788eb65d5ef10cefed0ae63bc76febaa8",
- "reference": "c9dfaec788eb65d5ef10cefed0ae63bc76febaa8",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/tester": "~1.0"
- },
- "suggest": {
- "ext-gd": "to use Image",
- "ext-iconv": "to use Strings::webalize() and toAscii()",
- "ext-intl": "for script transliteration in Strings::webalize() and toAscii()",
- "ext-mbstring": "to use Strings::lower() etc..."
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "Nette Utility Classes",
- "homepage": "https://nette.org",
- "time": "2015-10-05 12:18:24"
- },
- {
- "name": "nextras/static-router",
- "version": "v1.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/nextras/static-router.git",
- "reference": "cf4155820b9f2d2cb98705ce5538feb22226e8cc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nextras/static-router/zipball/cf4155820b9f2d2cb98705ce5538feb22226e8cc",
- "reference": "cf4155820b9f2d2cb98705ce5538feb22226e8cc",
- "shasum": ""
- },
- "require": {
- "nette/application": "~2.2",
- "php": ">=5.3"
- },
- "require-dev": {
- "nette/tester": "~1.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Nextras\\Routing\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nextras Community",
- "homepage": "https://github.com/nextras/static-router/graphs/contributors"
- }
- ],
- "description": "Simple static router for Nette Framework",
- "homepage": "https://github.com/nextras/static-router",
- "keywords": [
- "nette",
- "nextras",
- "router"
- ],
- "time": "2015-06-13 09:05:20"
- },
- {
- "name": "symfony/console",
- "version": "v2.7.7",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/console.git",
- "reference": "16bb1cb86df43c90931df65f529e7ebd79636750"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/16bb1cb86df43c90931df65f529e7ebd79636750",
- "reference": "16bb1cb86df43c90931df65f529e7ebd79636750",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/event-dispatcher": "~2.1",
- "symfony/process": "~2.1"
- },
- "suggest": {
- "psr/log": "For using the console logger",
- "symfony/event-dispatcher": "",
- "symfony/process": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Console\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Console Component",
- "homepage": "https://symfony.com",
- "time": "2015-11-18 09:54:26"
- },
- {
- "name": "tracy/tracy",
- "version": "v2.3.6",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/tracy.git",
- "reference": "79831c75b6f48fcb897d25ccae5deec358cb2142"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/tracy/zipball/79831c75b6f48fcb897d25ccae5deec358cb2142",
- "reference": "79831c75b6f48fcb897d25ccae5deec358cb2142",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.1"
- },
- "require-dev": {
- "nette/di": "~2.3",
- "nette/tester": "~1.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src"
- ],
- "files": [
- "src/shortcuts.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "Tracy: useful PHP debugger",
- "homepage": "https://tracy.nette.org",
- "keywords": [
- "debug",
- "debugger",
- "nette"
- ],
- "time": "2015-10-28 23:49:21"
- }
- ],
- "packages-dev": [
- {
- "name": "codeception/codeception",
- "version": "2.1.4",
- "source": {
- "type": "git",
- "url": "https://github.com/Codeception/Codeception.git",
- "reference": "6a812e8a0d1b1db939a29b4dc14cb398b21b6112"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Codeception/Codeception/zipball/6a812e8a0d1b1db939a29b4dc14cb398b21b6112",
- "reference": "6a812e8a0d1b1db939a29b4dc14cb398b21b6112",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "ext-mbstring": "*",
- "facebook/webdriver": ">=1.0.1",
- "guzzlehttp/guzzle": ">=4.1.4 <7.0",
- "guzzlehttp/psr7": "~1.0",
- "php": ">=5.4.0",
- "phpunit/phpunit": "~4.8.0",
- "symfony/browser-kit": "~2.4",
- "symfony/console": "~2.4",
- "symfony/css-selector": "~2.4",
- "symfony/dom-crawler": "~2.4,!=2.4.5",
- "symfony/event-dispatcher": "~2.4",
- "symfony/finder": "~2.4",
- "symfony/yaml": "~2.4"
- },
- "require-dev": {
- "codeception/specify": "~0.3",
- "facebook/php-sdk-v4": "~4.0",
- "flow/jsonpath": "~0.2",
- "monolog/monolog": "~1.8",
- "pda/pheanstalk": "~2.0",
- "videlalvaro/php-amqplib": "~2.4"
- },
- "suggest": {
- "codeception/phpbuiltinserver": "Extension to start and stop PHP built-in web server for your tests",
- "codeception/specify": "BDD-style code blocks",
- "codeception/verify": "BDD-style assertions",
- "monolog/monolog": "Log test steps",
- "phpseclib/phpseclib": "Extension required to use the SFTP option in the FTP Module."
- },
- "bin": [
- "codecept"
- ],
- "type": "library",
- "extra": {
- "branch-alias": []
- },
- "autoload": {
- "psr-4": {
- "Codeception\\": "src\\Codeception",
- "Codeception\\Extension\\": "ext"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Bodnarchuk",
- "email": "davert@mail.ua",
- "homepage": "http://codegyre.com"
- }
- ],
- "description": "BDD-style testing framework",
- "homepage": "http://codeception.com/",
- "keywords": [
- "BDD",
- "TDD",
- "acceptance testing",
- "functional testing",
- "unit testing"
- ],
- "time": "2015-11-12 03:57:06"
- },
- {
- "name": "facebook/webdriver",
- "version": "1.0.4",
- "source": {
- "type": "git",
- "url": "https://github.com/facebook/php-webdriver.git",
- "reference": "a6e209a309bf7cd71acf15476f40b11a25d5a79d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/a6e209a309bf7cd71acf15476f40b11a25d5a79d",
- "reference": "a6e209a309bf7cd71acf15476f40b11a25d5a79d",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.19"
- },
- "require-dev": {
- "phpunit/phpunit": "4.6.*"
- },
- "suggest": {
- "phpdocumentor/phpdocumentor": "2.*"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Facebook\\WebDriver\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "description": "A PHP client for WebDriver",
- "homepage": "https://github.com/facebook/php-webdriver",
- "keywords": [
- "facebook",
- "php",
- "selenium",
- "webdriver"
- ],
- "time": "2015-11-03 22:17:22"
- },
- {
- "name": "guzzlehttp/guzzle",
- "version": "6.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/guzzle.git",
- "reference": "c6851d6e48f63b69357cbfa55bca116448140e0c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/c6851d6e48f63b69357cbfa55bca116448140e0c",
- "reference": "c6851d6e48f63b69357cbfa55bca116448140e0c",
- "shasum": ""
- },
- "require": {
- "guzzlehttp/promises": "~1.0",
- "guzzlehttp/psr7": "~1.1",
- "php": ">=5.5.0"
- },
- "require-dev": {
- "ext-curl": "*",
- "phpunit/phpunit": "~4.0",
- "psr/log": "~1.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "6.1-dev"
- }
- },
- "autoload": {
- "files": [
- "src/functions_include.php"
- ],
- "psr-4": {
- "GuzzleHttp\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "description": "Guzzle is a PHP HTTP client library",
- "homepage": "http://guzzlephp.org/",
- "keywords": [
- "client",
- "curl",
- "framework",
- "http",
- "http client",
- "rest",
- "web service"
- ],
- "time": "2015-11-23 00:47:50"
- },
- {
- "name": "guzzlehttp/promises",
- "version": "1.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/promises.git",
- "reference": "b1e1c0d55f8083c71eda2c28c12a228d708294ea"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/b1e1c0d55f8083c71eda2c28c12a228d708294ea",
- "reference": "b1e1c0d55f8083c71eda2c28c12a228d708294ea",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Promise\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "description": "Guzzle promises library",
- "keywords": [
- "promise"
- ],
- "time": "2015-10-15 22:28:00"
- },
- {
- "name": "guzzlehttp/psr7",
- "version": "1.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/psr7.git",
- "reference": "4d0bdbe1206df7440219ce14c972aa57cc5e4982"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/4d0bdbe1206df7440219ce14c972aa57cc5e4982",
- "reference": "4d0bdbe1206df7440219ce14c972aa57cc5e4982",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0",
- "psr/http-message": "~1.0"
- },
- "provide": {
- "psr/http-message-implementation": "1.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Psr7\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "description": "PSR-7 message implementation",
- "keywords": [
- "http",
- "message",
- "stream",
- "uri"
- ],
- "time": "2015-11-03 01:34:55"
- },
- {
- "name": "nette/tester",
- "version": "v1.6.1",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/tester.git",
- "reference": "b0f312e7ab9a70bbd5c92568e2a20dd46be9a529"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/tester/zipball/b0f312e7ab9a70bbd5c92568e2a20dd46be9a529",
- "reference": "b0f312e7ab9a70bbd5c92568e2a20dd46be9a529",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "bin": [
- "src/tester"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.6-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "An easy-to-use PHP unit testing framework.",
- "homepage": "https://tester.nette.org",
- "keywords": [
- "nette",
- "testing",
- "unit"
- ],
- "time": "2015-10-26 05:38:30"
- },
- {
- "name": "phpdocumentor/reflection-docblock",
- "version": "2.0.4",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8",
- "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "suggest": {
- "dflydev/markdown": "~1.0",
- "erusev/parsedown": "~1.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "phpDocumentor": [
- "src/"
- ]
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "mike.vanriel@naenius.com"
- }
- ],
- "time": "2015-02-03 12:10:50"
- },
- {
- "name": "phpspec/prophecy",
- "version": "v1.5.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpspec/prophecy.git",
- "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4745ded9307786b730d7a60df5cb5a6c43cf95f7",
- "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.0.2",
- "phpdocumentor/reflection-docblock": "~2.0",
- "sebastian/comparator": "~1.1"
- },
- "require-dev": {
- "phpspec/phpspec": "~2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Prophecy\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Konstantin Kudryashov",
- "email": "ever.zet@gmail.com",
- "homepage": "http://everzet.com"
- },
- {
- "name": "Marcello Duarte",
- "email": "marcello.duarte@gmail.com"
- }
- ],
- "description": "Highly opinionated mocking framework for PHP 5.3+",
- "homepage": "https://github.com/phpspec/prophecy",
- "keywords": [
- "Double",
- "Dummy",
- "fake",
- "mock",
- "spy",
- "stub"
- ],
- "time": "2015-08-13 10:07:40"
- },
- {
- "name": "phpunit/php-code-coverage",
- "version": "2.2.4",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "phpunit/php-file-iterator": "~1.3",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-token-stream": "~1.3",
- "sebastian/environment": "^1.3.2",
- "sebastian/version": "~1.0"
- },
- "require-dev": {
- "ext-xdebug": ">=2.1.4",
- "phpunit/phpunit": "~4"
- },
- "suggest": {
- "ext-dom": "*",
- "ext-xdebug": ">=2.2.1",
- "ext-xmlwriter": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.2.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
- "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
- "keywords": [
- "coverage",
- "testing",
- "xunit"
- ],
- "time": "2015-10-06 15:47:00"
- },
- {
- "name": "phpunit/php-file-iterator",
- "version": "1.4.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
- "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "FilterIterator implementation that filters files based on a list of suffixes.",
- "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
- "keywords": [
- "filesystem",
- "iterator"
- ],
- "time": "2015-06-21 13:08:43"
- },
- {
- "name": "phpunit/php-text-template",
- "version": "1.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Simple template engine.",
- "homepage": "https://github.com/sebastianbergmann/php-text-template/",
- "keywords": [
- "template"
- ],
- "time": "2015-06-21 13:50:34"
- },
- {
- "name": "phpunit/php-timer",
- "version": "1.0.7",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
- "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Utility class for timing",
- "homepage": "https://github.com/sebastianbergmann/php-timer/",
- "keywords": [
- "timer"
- ],
- "time": "2015-06-21 08:01:12"
- },
- {
- "name": "phpunit/php-token-stream",
- "version": "1.4.8",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-token-stream.git",
- "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
- "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
- "shasum": ""
- },
- "require": {
- "ext-tokenizer": "*",
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Wrapper around PHP's tokenizer extension.",
- "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
- "keywords": [
- "tokenizer"
- ],
- "time": "2015-09-15 10:49:45"
- },
- {
- "name": "phpunit/phpunit",
- "version": "4.8.18",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "fa33d4ad96481b91df343d83e8c8aabed6b1dfd3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fa33d4ad96481b91df343d83e8c8aabed6b1dfd3",
- "reference": "fa33d4ad96481b91df343d83e8c8aabed6b1dfd3",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-json": "*",
- "ext-pcre": "*",
- "ext-reflection": "*",
- "ext-spl": "*",
- "php": ">=5.3.3",
- "phpspec/prophecy": "^1.3.1",
- "phpunit/php-code-coverage": "~2.1",
- "phpunit/php-file-iterator": "~1.4",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-timer": ">=1.0.6",
- "phpunit/phpunit-mock-objects": "~2.3",
- "sebastian/comparator": "~1.1",
- "sebastian/diff": "~1.2",
- "sebastian/environment": "~1.3",
- "sebastian/exporter": "~1.2",
- "sebastian/global-state": "~1.0",
- "sebastian/version": "~1.0",
- "symfony/yaml": "~2.1|~3.0"
- },
- "suggest": {
- "phpunit/php-invoker": "~1.1"
- },
- "bin": [
- "phpunit"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.8.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "The PHP Unit Testing framework.",
- "homepage": "https://phpunit.de/",
- "keywords": [
- "phpunit",
- "testing",
- "xunit"
- ],
- "time": "2015-11-11 11:32:49"
- },
- {
- "name": "phpunit/phpunit-mock-objects",
- "version": "2.3.8",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
- "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
- "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.0.2",
- "php": ">=5.3.3",
- "phpunit/php-text-template": "~1.2",
- "sebastian/exporter": "~1.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "suggest": {
- "ext-soap": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Mock Object library for PHPUnit",
- "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
- "keywords": [
- "mock",
- "xunit"
- ],
- "time": "2015-10-02 06:51:40"
- },
- {
- "name": "psr/http-message",
- "version": "1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-message.git",
- "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
- "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Http\\Message\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for HTTP messages",
- "keywords": [
- "http",
- "http-message",
- "psr",
- "psr-7",
- "request",
- "response"
- ],
- "time": "2015-05-04 20:22:00"
- },
- {
- "name": "sebastian/comparator",
- "version": "1.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "937efb279bd37a375bcadf584dec0726f84dbf22"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22",
- "reference": "937efb279bd37a375bcadf584dec0726f84dbf22",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "sebastian/diff": "~1.2",
- "sebastian/exporter": "~1.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@2bepublished.at"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Provides the functionality to compare PHP values for equality",
- "homepage": "http://www.github.com/sebastianbergmann/comparator",
- "keywords": [
- "comparator",
- "compare",
- "equality"
- ],
- "time": "2015-07-26 15:48:44"
- },
- {
- "name": "sebastian/diff",
- "version": "1.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3",
- "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Kore Nordmann",
- "email": "mail@kore-nordmann.de"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Diff implementation",
- "homepage": "http://www.github.com/sebastianbergmann/diff",
- "keywords": [
- "diff"
- ],
- "time": "2015-02-22 15:13:53"
- },
- {
- "name": "sebastian/environment",
- "version": "1.3.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6324c907ce7a52478eeeaede764f48733ef5ae44",
- "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Provides functionality to handle HHVM/PHP environments",
- "homepage": "http://www.github.com/sebastianbergmann/environment",
- "keywords": [
- "Xdebug",
- "environment",
- "hhvm"
- ],
- "time": "2015-08-03 06:14:51"
- },
- {
- "name": "sebastian/exporter",
- "version": "1.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "7ae5513327cb536431847bcc0c10edba2701064e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e",
- "reference": "7ae5513327cb536431847bcc0c10edba2701064e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "sebastian/recursion-context": "~1.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@2bepublished.at"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- }
- ],
- "description": "Provides the functionality to export PHP variables for visualization",
- "homepage": "http://www.github.com/sebastianbergmann/exporter",
- "keywords": [
- "export",
- "exporter"
- ],
- "time": "2015-06-21 07:55:53"
- },
- {
- "name": "sebastian/global-state",
- "version": "1.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
- "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.2"
- },
- "suggest": {
- "ext-uopz": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Snapshotting of global state",
- "homepage": "http://www.github.com/sebastianbergmann/global-state",
- "keywords": [
- "global state"
- ],
- "time": "2015-10-12 03:26:01"
- },
- {
- "name": "sebastian/recursion-context",
- "version": "1.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "994d4a811bafe801fb06dccbee797863ba2792ba"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/994d4a811bafe801fb06dccbee797863ba2792ba",
- "reference": "994d4a811bafe801fb06dccbee797863ba2792ba",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- }
- ],
- "description": "Provides functionality to recursively process PHP variables",
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
- "time": "2015-06-21 08:04:50"
- },
- {
- "name": "sebastian/version",
- "version": "1.0.6",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/version.git",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "shasum": ""
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library that helps with managing the version number of Git-hosted PHP projects",
- "homepage": "https://github.com/sebastianbergmann/version",
- "time": "2015-06-21 13:59:46"
- },
- {
- "name": "symfony/browser-kit",
- "version": "v2.7.7",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/browser-kit.git",
- "reference": "bd28847ea2193916074c7b11d4fdd78570049694"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/bd28847ea2193916074c7b11d4fdd78570049694",
- "reference": "bd28847ea2193916074c7b11d4fdd78570049694",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9",
- "symfony/dom-crawler": "~2.0,>=2.0.5"
- },
- "require-dev": {
- "symfony/css-selector": "~2.0,>=2.0.5",
- "symfony/process": "~2.3.34|~2.7,>=2.7.6"
- },
- "suggest": {
- "symfony/process": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\BrowserKit\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony BrowserKit Component",
- "homepage": "https://symfony.com",
- "time": "2015-11-02 20:20:53"
- },
- {
- "name": "symfony/css-selector",
- "version": "v2.7.7",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/css-selector.git",
- "reference": "abb47717fb88aebd9437da2fc8bb01a50a36679f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/abb47717fb88aebd9437da2fc8bb01a50a36679f",
- "reference": "abb47717fb88aebd9437da2fc8bb01a50a36679f",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\CssSelector\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jean-François Simon",
- "email": "jeanfrancois.simon@sensiolabs.com"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony CssSelector Component",
- "homepage": "https://symfony.com",
- "time": "2015-10-30 20:10:21"
- },
- {
- "name": "symfony/dom-crawler",
- "version": "v2.7.7",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/dom-crawler.git",
- "reference": "b33593cbfe1d81b50d48353f338aca76a08658d8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/b33593cbfe1d81b50d48353f338aca76a08658d8",
- "reference": "b33593cbfe1d81b50d48353f338aca76a08658d8",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "require-dev": {
- "symfony/css-selector": "~2.3"
- },
- "suggest": {
- "symfony/css-selector": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\DomCrawler\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony DomCrawler Component",
- "homepage": "https://symfony.com",
- "time": "2015-11-02 20:20:53"
- },
- {
- "name": "symfony/event-dispatcher",
- "version": "v2.7.7",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "7e2f9c31645680026c2372edf66f863fc7757af5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7e2f9c31645680026c2372edf66f863fc7757af5",
- "reference": "7e2f9c31645680026c2372edf66f863fc7757af5",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "~2.0,>=2.0.5",
- "symfony/dependency-injection": "~2.6",
- "symfony/expression-language": "~2.6",
- "symfony/stopwatch": "~2.3"
- },
- "suggest": {
- "symfony/dependency-injection": "",
- "symfony/http-kernel": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\EventDispatcher\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony EventDispatcher Component",
- "homepage": "https://symfony.com",
- "time": "2015-10-30 20:10:21"
- },
- {
- "name": "symfony/finder",
- "version": "v2.7.7",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/finder.git",
- "reference": "a06a0c0ff7db3736a50d530c908cca547bf13da9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/a06a0c0ff7db3736a50d530c908cca547bf13da9",
- "reference": "a06a0c0ff7db3736a50d530c908cca547bf13da9",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Finder\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Finder Component",
- "homepage": "https://symfony.com",
- "time": "2015-10-30 20:10:21"
- },
- {
- "name": "symfony/yaml",
- "version": "v2.7.7",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "4cfcd7a9fceba662b3c036b7d9a91f6197af046c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/4cfcd7a9fceba662b3c036b7d9a91f6197af046c",
- "reference": "4cfcd7a9fceba662b3c036b7d9a91f6197af046c",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Yaml\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Yaml Component",
- "homepage": "https://symfony.com",
- "time": "2015-11-18 13:41:01"
- }
- ],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": {
- "majkl578/nette-identity-doctrine": 5
- },
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": {
- "php": ">= 5.4.0"
- },
- "platform-dev": []
-}
diff --git a/nette/doctrine/notejam/log/.gitignore b/nette/doctrine/notejam/log/.gitignore
deleted file mode 100644
index d6b7ef32c..000000000
--- a/nette/doctrine/notejam/log/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
diff --git a/nette/doctrine/notejam/src/Notejam/Http/RouterFactory.php b/nette/doctrine/notejam/src/Notejam/Http/RouterFactory.php
deleted file mode 100644
index d3a6d7584..000000000
--- a/nette/doctrine/notejam/src/Notejam/Http/RouterFactory.php
+++ /dev/null
@@ -1,40 +0,0 @@
- 'signup',
- 'User:signIn' => 'signin',
- 'User:signOut' => 'signout',
- 'User:forgottenPassword' => 'forgot-password',
- 'User:settings' => 'settings',
- ]);
-
- $router[] = new Route('pads/[/]', 'Pad:detail');
- $router[] = new Route('pads[/]', 'Pad:default');
-
- $router[] = new Route('notes/[/]', 'Note:detail');
- $router[] = new Route('notes[/]', 'Note:');
- $router[] = new Route('[/]', 'Note:default');
-
- return $router;
- }
-
-}
diff --git a/nette/doctrine/notejam/src/Notejam/Notes/Note.php b/nette/doctrine/notejam/src/Notejam/Notes/Note.php
deleted file mode 100644
index 15f73eb96..000000000
--- a/nette/doctrine/notejam/src/Notejam/Notes/Note.php
+++ /dev/null
@@ -1,168 +0,0 @@
-user = $user;
- }
-
-
-
- /**
- * @param string $name
- * @return Note
- */
- public function setName($name)
- {
- $this->name = $name;
- return $this;
- }
-
-
-
- /**
- * @return string
- */
- public function getName()
- {
- return $this->name;
- }
-
-
-
- /**
- * @param string $text
- * @return Note
- */
- public function setText($text)
- {
- $this->text = $text;
- return $this;
- }
-
-
-
- /**
- * @return string
- */
- public function getText()
- {
- return $this->text;
- }
-
-
-
- /**
- * @return User
- */
- public function getUser()
- {
- return $this->user;
- }
-
-
-
- /**
- * @return Pad
- */
- public function getPad()
- {
- return $this->pad;
- }
-
-
-
- /**
- * @param Pad pad
- * @return Note
- */
- public function setPad(Pad $pad = null)
- {
- $this->pad = $pad;
- return $this;
- }
-
-
-
- /**
- * @ORM\PrePersist
- * @ORM\PreUpdate
- */
- public function setUpdatedAt()
- {
- $this->updatedAt = new \DateTime('now');
- }
-
-
-
- /**
- * @return \Datetime
- */
- public function getUpdatedAt()
- {
- return clone $this->updatedAt;
- }
-
-
-
- /**
- * @return string
- */
- public function __toString()
- {
- return $this->getName();
- }
-}
diff --git a/nette/doctrine/notejam/src/Notejam/Notes/NoteRepository.php b/nette/doctrine/notejam/src/Notejam/Notes/NoteRepository.php
deleted file mode 100644
index 913e66baf..000000000
--- a/nette/doctrine/notejam/src/Notejam/Notes/NoteRepository.php
+++ /dev/null
@@ -1,34 +0,0 @@
- array('name' => 'ASC'),
- '-name' => array('name' => 'DESC'),
- 'updated_at' => array('updatedAt' => 'ASC'),
- '-updated_at' => array('updatedAt' => 'DESC')
- ];
-
- return isset($ordering[$orderBy]) ? $ordering[$orderBy] : $ordering['name'];
- }
-
-}
diff --git a/nette/doctrine/notejam/src/Notejam/Pads/Pad.php b/nette/doctrine/notejam/src/Notejam/Pads/Pad.php
deleted file mode 100644
index cdeec9b1a..000000000
--- a/nette/doctrine/notejam/src/Notejam/Pads/Pad.php
+++ /dev/null
@@ -1,105 +0,0 @@
-user = $user;
- $this->notes = new ArrayCollection();
- }
-
-
-
- /**
- * @param string $name
- * @return Pad
- */
- public function setName($name)
- {
- $this->name = $name;
- return $this;
- }
-
-
-
- /**
- * @return string
- */
- public function getName()
- {
- return $this->name;
- }
-
-
-
- /**
- * @return User
- */
- public function getUser()
- {
- return $this->user;
- }
-
-
-
- /**
- * @param User user
- * @return Pad
- */
- public function setUser($user)
- {
- $this->user = $user;
- return $this;
- }
-
-
-
- /**
- * @return string
- */
- public function __toString()
- {
- return $this->getName();
- }
-
-}
diff --git a/nette/doctrine/notejam/src/Notejam/Pads/PadRepository.php b/nette/doctrine/notejam/src/Notejam/Pads/PadRepository.php
deleted file mode 100644
index 12b36c3cf..000000000
--- a/nette/doctrine/notejam/src/Notejam/Pads/PadRepository.php
+++ /dev/null
@@ -1,16 +0,0 @@
-setRenderer(new FormRenderer());
-
- return $form;
- }
-
-}
diff --git a/nette/doctrine/notejam/src/Notejam/UI/FormRenderer.php b/nette/doctrine/notejam/src/Notejam/UI/FormRenderer.php
deleted file mode 100644
index 8984181a6..000000000
--- a/nette/doctrine/notejam/src/Notejam/UI/FormRenderer.php
+++ /dev/null
@@ -1,29 +0,0 @@
-wrappers['error']['container'] = 'ul class=errorlist';
- $this->wrappers['control']['errorcontainer'] = 'ul class=errorlist';
- $this->wrappers['control']['erroritem'] = 'li';
-
- // remove rendering in table
- $this->wrappers['controls']['container'] = NULL;
- $this->wrappers['pair']['container'] = NULL;
- $this->wrappers['control']['container'] = NULL;
- $this->wrappers['label']['container'] = NULL;
- }
-
-}
diff --git a/nette/doctrine/notejam/src/Notejam/Users/Authenticator.php b/nette/doctrine/notejam/src/Notejam/Users/Authenticator.php
deleted file mode 100644
index 6634fdd2a..000000000
--- a/nette/doctrine/notejam/src/Notejam/Users/Authenticator.php
+++ /dev/null
@@ -1,49 +0,0 @@
-userRepository = $userRepository;
- }
-
-
-
- /**
- * Using the given email finds the user and verifies it's password.
- * If the user is not fund or if the password is wrong, it throws.
- *
- * @param array $credentials
- * @throws AuthenticationException
- * @return User|NULL
- */
- public function authenticate(array $credentials)
- {
- list($username, $password) = $credentials;
-
- if (!$user = $this->userRepository->findOneBy(['email' => $username])) {
- throw new AuthenticationException("User '$username' not found.", self::IDENTITY_NOT_FOUND);
-
- } elseif (!$user->verifyPassword($password)) {
- throw new AuthenticationException('Invalid password.', self::INVALID_CREDENTIAL);
- }
-
- return $user;
- }
-
-}
diff --git a/nette/doctrine/notejam/src/Notejam/Users/User.php b/nette/doctrine/notejam/src/Notejam/Users/User.php
deleted file mode 100644
index d1348a90c..000000000
--- a/nette/doctrine/notejam/src/Notejam/Users/User.php
+++ /dev/null
@@ -1,162 +0,0 @@
-email = $email;
- $this->password = Passwords::hash($password);
- $this->active = true;
-
- $this->pads = new ArrayCollection();
- $this->notes = new ArrayCollection();
- }
-
-
-
- /**
- * List of string roles of the user.
- *
- * @return array
- */
- public function getRoles()
- {
- return array('user');
- }
-
-
-
- /**
- * @return string
- */
- public function getEmail()
- {
- return $this->email;
- }
-
-
-
- /**
- * @return boolean
- */
- public function isActive()
- {
- return $this->active;
- }
-
-
-
- /**
- * Changes the password, only if the right original password is provided.
- *
- * @param string $original
- * @param string $password
- * @throws InvalidPasswordException
- */
- public function changePassword($original, $password)
- {
- if (!$this->verifyPassword($original)) {
- throw new InvalidPasswordException('Wrong password');
- }
-
- $this->password = Passwords::hash($password);
- }
-
-
-
- /**
- * Generates a random password that can be used when the user forgots the orignal.
- * In real app, this shouldn't overwrite the current password,
- * it should be in another field, or even better a whole new table.
- *
- * @return string
- */
- public function generateRandomPassword()
- {
- $password = Random::generate(10);
- $this->password = Passwords::hash($password);
- return $password;
- }
-
-
-
- /**
- * Verifies if given password is the same as the original hashed password.
- *
- * @param string $password
- * @return bool
- */
- public function verifyPassword($password)
- {
- return Passwords::verify($password, $this->password);
- }
-
-
-
- /**
- * If the password was hashed with too small cost, this method can tell you that,
- * so you can regenerate the hash with higher cost.
- *
- * @return bool
- */
- public function passwordNeedsRehash()
- {
- return Passwords::needsRehash($this->password);
- }
-
-}
diff --git a/nette/doctrine/notejam/src/Notejam/Users/UserRepository.php b/nette/doctrine/notejam/src/Notejam/Users/UserRepository.php
deleted file mode 100644
index 50ce70d6e..000000000
--- a/nette/doctrine/notejam/src/Notejam/Users/UserRepository.php
+++ /dev/null
@@ -1,16 +0,0 @@
-amOnPage('/signin');
- $this->see('Sign in');
- $this->fillField("Email", $email);
- $this->fillField("Password", $password);
- $this->click('Sign in', ['css' => 'form.sign-in']);
- }
-
-}
diff --git a/nette/doctrine/notejam/tests/_support/FunctionalTester.php b/nette/doctrine/notejam/tests/_support/FunctionalTester.php
deleted file mode 100644
index 7e888f8b2..000000000
--- a/nette/doctrine/notejam/tests/_support/FunctionalTester.php
+++ /dev/null
@@ -1,26 +0,0 @@
-wantTo('see note can be successfully created');
-$I->testLogin();
-$I->amOnPage('/notes/create');
-$I->fillField('Name', 'Example note');
-$I->fillField('Text', 'Lorem ipsum');
-$I->selectOption('Pad', 1);
-$I->click('Save');
-$I->see('Example note');
diff --git a/nette/doctrine/notejam/tests/acceptance/CreateNoteFailCept.php b/nette/doctrine/notejam/tests/acceptance/CreateNoteFailCept.php
deleted file mode 100644
index 4f768ee29..000000000
--- a/nette/doctrine/notejam/tests/acceptance/CreateNoteFailCept.php
+++ /dev/null
@@ -1,9 +0,0 @@
-wantTo('see note can not be created without required fields');
-$I->testLogin();
-$I->amOnPage('/notes/create');
-$I->click('Save');
-$I->seeInCurrentUrl('/notes/create');
-$I->see('Name is required');
-$I->see('Text is required');
diff --git a/nette/doctrine/notejam/tests/acceptance/CreatePadCept.php b/nette/doctrine/notejam/tests/acceptance/CreatePadCept.php
deleted file mode 100644
index 4926950ba..000000000
--- a/nette/doctrine/notejam/tests/acceptance/CreatePadCept.php
+++ /dev/null
@@ -1,8 +0,0 @@
-wantTo('see pad can be successfully created');
-$I->testLogin();
-$I->amOnPage('/pads/create');
-$I->fillField('Name', 'Example pad');
-$I->click('Save');
-$I->see('Example pad');
diff --git a/nette/doctrine/notejam/tests/acceptance/CreatePadFailCept.php b/nette/doctrine/notejam/tests/acceptance/CreatePadFailCept.php
deleted file mode 100644
index b8f61bbfa..000000000
--- a/nette/doctrine/notejam/tests/acceptance/CreatePadFailCept.php
+++ /dev/null
@@ -1,9 +0,0 @@
-wantTo('see pad can not be created without required fields');
-$I->testLogin();
-$I->amOnPage('/pads/create');
-$I->click('Save');
-$I->dontSee('Example pad');
-$I->seeInCurrentUrl('/pads/create');
-$I->see('Name is required');
diff --git a/nette/doctrine/notejam/tests/acceptance/DeleteNoteCept.php b/nette/doctrine/notejam/tests/acceptance/DeleteNoteCept.php
deleted file mode 100644
index fb718c70c..000000000
--- a/nette/doctrine/notejam/tests/acceptance/DeleteNoteCept.php
+++ /dev/null
@@ -1,7 +0,0 @@
-wantTo('see note can be successfully deleted');
-$I->testLogin();
-$I->amOnPage('/notes/1/delete');
-$I->click('Yes, I want to delete this note');
-$I->dontSee('Note 1');
diff --git a/nette/doctrine/notejam/tests/acceptance/DeleteOtherOwnersNoteCept.php b/nette/doctrine/notejam/tests/acceptance/DeleteOtherOwnersNoteCept.php
deleted file mode 100644
index f9f262da0..000000000
--- a/nette/doctrine/notejam/tests/acceptance/DeleteOtherOwnersNoteCept.php
+++ /dev/null
@@ -1,6 +0,0 @@
-wantTo('see note can not be deleted by not an owner');
-$I->testLogin();
-$I->amOnPage('/notes/5/delete');
-$I->dontSee('Yes, I want to delete this note');
diff --git a/nette/doctrine/notejam/tests/acceptance/DeleteOtherOwnersPadCept.php b/nette/doctrine/notejam/tests/acceptance/DeleteOtherOwnersPadCept.php
deleted file mode 100644
index 531887afe..000000000
--- a/nette/doctrine/notejam/tests/acceptance/DeleteOtherOwnersPadCept.php
+++ /dev/null
@@ -1,6 +0,0 @@
-wantTo('see pad can not be deleted by not an owner');
-$I->testLogin();
-$I->amOnPage('/pads/4/delete');
-$I->dontSee('Yes, I want to delete this pad');
diff --git a/nette/doctrine/notejam/tests/acceptance/DeletePadCept.php b/nette/doctrine/notejam/tests/acceptance/DeletePadCept.php
deleted file mode 100644
index f86354c75..000000000
--- a/nette/doctrine/notejam/tests/acceptance/DeletePadCept.php
+++ /dev/null
@@ -1,7 +0,0 @@
-wantTo('see pad can be successfully deleted');
-$I->testLogin();
-$I->amOnPage('/pads/1/delete');
-$I->click('Yes, I want to delete this pad');
-$I->dontSee('Pad 1');
diff --git a/nette/doctrine/notejam/tests/acceptance/EditNoteCept.php b/nette/doctrine/notejam/tests/acceptance/EditNoteCept.php
deleted file mode 100644
index 9012a2e35..000000000
--- a/nette/doctrine/notejam/tests/acceptance/EditNoteCept.php
+++ /dev/null
@@ -1,12 +0,0 @@
-wantTo('see note can be successfully edited');
-$I->testLogin();
-$I->amOnPage('/notes/1/edit');
-$I->fillField('Name', 'Note 1 - edited');
-$I->fillField('Text', 'Lorem ipsum - edited');
-$I->selectOption('Pad', 1);
-$I->click('Save');
-$I->see('Note 1 - edited');
-$I->amOnPage('/pads/1');
-$I->see('Note 1 - edited');
diff --git a/nette/doctrine/notejam/tests/acceptance/EditNoteFailCept.php b/nette/doctrine/notejam/tests/acceptance/EditNoteFailCept.php
deleted file mode 100644
index f921f1475..000000000
--- a/nette/doctrine/notejam/tests/acceptance/EditNoteFailCept.php
+++ /dev/null
@@ -1,11 +0,0 @@
-wantTo('see note can not be edited without required fields');
-$I->testLogin();
-$I->amOnPage('/notes/1/edit');
-$I->fillField('Name', '');
-$I->fillField('Text', '');
-$I->click('Save');
-$I->seeInCurrentUrl('/notes/1/edit');
-$I->see('Name is required');
-$I->see('Text is required');
diff --git a/nette/doctrine/notejam/tests/acceptance/EditOtherOwnersNoteCept.php b/nette/doctrine/notejam/tests/acceptance/EditOtherOwnersNoteCept.php
deleted file mode 100644
index 23d00f608..000000000
--- a/nette/doctrine/notejam/tests/acceptance/EditOtherOwnersNoteCept.php
+++ /dev/null
@@ -1,6 +0,0 @@
-wantTo('see note can not be edited by not an owner');
-$I->testLogin();
-$I->amOnPage('/notes/5/edit');
-$I->dontSee('Save', 'input');
diff --git a/nette/doctrine/notejam/tests/acceptance/EditOtherOwnersPadCept.php b/nette/doctrine/notejam/tests/acceptance/EditOtherOwnersPadCept.php
deleted file mode 100644
index 227f97916..000000000
--- a/nette/doctrine/notejam/tests/acceptance/EditOtherOwnersPadCept.php
+++ /dev/null
@@ -1,6 +0,0 @@
-wantTo('see pad can not be edited by not an owner');
-$I->testLogin();
-$I->amOnPage('/pads/4/edit');
-$I->dontSee('Save', 'input');
diff --git a/nette/doctrine/notejam/tests/acceptance/EditPadCept.php b/nette/doctrine/notejam/tests/acceptance/EditPadCept.php
deleted file mode 100644
index 923c9cc95..000000000
--- a/nette/doctrine/notejam/tests/acceptance/EditPadCept.php
+++ /dev/null
@@ -1,8 +0,0 @@
-wantTo('see pad can be successfully edited');
-$I->testLogin();
-$I->amOnPage('/pads/1/edit');
-$I->fillField('Name', 'Pad 1 - edited');
-$I->click('Save');
-$I->see('Pad 1 - edited');
diff --git a/nette/doctrine/notejam/tests/acceptance/EditPadFailCept.php b/nette/doctrine/notejam/tests/acceptance/EditPadFailCept.php
deleted file mode 100644
index a6614b736..000000000
--- a/nette/doctrine/notejam/tests/acceptance/EditPadFailCept.php
+++ /dev/null
@@ -1,9 +0,0 @@
-wantTo('see pad cannot be edited without required fields');
-$I->testLogin();
-$I->amOnPage('/pads/1/edit');
-$I->fillField('Name', '');
-$I->click('Save');
-$I->seeInCurrentUrl('/pads/1/edit');
-$I->see('Name is required');
diff --git a/nette/doctrine/notejam/tests/acceptance/ForgottenPasswordCept.php b/nette/doctrine/notejam/tests/acceptance/ForgottenPasswordCept.php
deleted file mode 100644
index aaeccdc3c..000000000
--- a/nette/doctrine/notejam/tests/acceptance/ForgottenPasswordCept.php
+++ /dev/null
@@ -1,7 +0,0 @@
-wantTo('see user can successfully get new password');
-$I->amOnPage('/forgot-password');
-$I->fillField('Email', 'john.doe@example.com');
-$I->click('Get new password');
-$I->see('Sign in');
diff --git a/nette/doctrine/notejam/tests/acceptance/ForgottenPasswordInvalidEmailCept.php b/nette/doctrine/notejam/tests/acceptance/ForgottenPasswordInvalidEmailCept.php
deleted file mode 100644
index 2be0e84ab..000000000
--- a/nette/doctrine/notejam/tests/acceptance/ForgottenPasswordInvalidEmailCept.php
+++ /dev/null
@@ -1,7 +0,0 @@
-wantTo('see user can not successfully get new password with invalid email');
-$I->amOnPage('/forgot-password');
-$I->fillField('Email', 'invalid');
-$I->click('Get new password');
-$I->see('Invalid email');
diff --git a/nette/doctrine/notejam/tests/acceptance/ForgottenPasswordUnregisteredEmailCept.php b/nette/doctrine/notejam/tests/acceptance/ForgottenPasswordUnregisteredEmailCept.php
deleted file mode 100644
index 1ef96e58d..000000000
--- a/nette/doctrine/notejam/tests/acceptance/ForgottenPasswordUnregisteredEmailCept.php
+++ /dev/null
@@ -1,7 +0,0 @@
-wantTo('see user can not successfully get new password with unregistered email');
-$I->amOnPage('/forgot-password');
-$I->fillField('Email', 'invalid@example.com');
-$I->click('Get new password');
-$I->see("User with given email doesn't exist");
diff --git a/nette/doctrine/notejam/tests/acceptance/HomepageCept.php b/nette/doctrine/notejam/tests/acceptance/HomepageCept.php
deleted file mode 100644
index c7c7afd42..000000000
--- a/nette/doctrine/notejam/tests/acceptance/HomepageCept.php
+++ /dev/null
@@ -1,8 +0,0 @@
-wantTo('see notes can be viewed successfully');
-$I->amOnPage('/');
-$I->seeInCurrentUrl('/signin');
-$I->testLogin();
-$I->seeCurrentUrlEquals('/');
-$I->see('My pads');
diff --git a/nette/doctrine/notejam/tests/acceptance/NoteDetailCept.php b/nette/doctrine/notejam/tests/acceptance/NoteDetailCept.php
deleted file mode 100644
index 55c890c63..000000000
--- a/nette/doctrine/notejam/tests/acceptance/NoteDetailCept.php
+++ /dev/null
@@ -1,7 +0,0 @@
-wantTo('see note can be viewed successfully');
-$I->testLogin();
-$I->amOnPage('/notes/1');
-$I->see('Note 1');
-$I->see('Lorem ipsum');
diff --git a/nette/doctrine/notejam/tests/acceptance/OtherOwnersNoteDetailCept.php b/nette/doctrine/notejam/tests/acceptance/OtherOwnersNoteDetailCept.php
deleted file mode 100644
index 2e65f0224..000000000
--- a/nette/doctrine/notejam/tests/acceptance/OtherOwnersNoteDetailCept.php
+++ /dev/null
@@ -1,7 +0,0 @@
-wantTo('see note can not be viewed by not an owner');
-$I->testLogin();
-$I->amOnPage('/notes/5');
-$I->dontSee('Other Note');
-$I->dontSee('Lorem ipsum');
diff --git a/nette/doctrine/notejam/tests/acceptance/OtherOwnersPadDetailCept.php b/nette/doctrine/notejam/tests/acceptance/OtherOwnersPadDetailCept.php
deleted file mode 100644
index e169ae94f..000000000
--- a/nette/doctrine/notejam/tests/acceptance/OtherOwnersPadDetailCept.php
+++ /dev/null
@@ -1,6 +0,0 @@
-wantTo('see pad can not be viewed by not an owner');
-$I->testLogin();
-$I->amOnPage('/pads/4');
-$I->dontSee('Other Pad');
diff --git a/nette/doctrine/notejam/tests/acceptance/PadDetailCept.php b/nette/doctrine/notejam/tests/acceptance/PadDetailCept.php
deleted file mode 100644
index cc00bcf9a..000000000
--- a/nette/doctrine/notejam/tests/acceptance/PadDetailCept.php
+++ /dev/null
@@ -1,7 +0,0 @@
-wantTo('see pad can be viewed');
-$I->testLogin();
-$I->amOnPage('/pads/1');
-$I->see('Pad 1');
-$I->see('Note 2'); // Note 2 belongs to Pad 1
diff --git a/nette/doctrine/notejam/tests/acceptance/SetNewPasswordCept.php b/nette/doctrine/notejam/tests/acceptance/SetNewPasswordCept.php
deleted file mode 100644
index 70c1ed8ef..000000000
--- a/nette/doctrine/notejam/tests/acceptance/SetNewPasswordCept.php
+++ /dev/null
@@ -1,10 +0,0 @@
-wantTo('see user can successfully set new password');
-$I->testLogin();
-$I->amOnPage('/settings');
-$I->fillField('Current password', 'pass');
-$I->fillField('New password', 'qwerty');
-$I->fillField('Confirm', 'qwerty');
-$I->click('Change password');
-$I->see('Account settings');
diff --git a/nette/doctrine/notejam/tests/acceptance/SetNewPasswordFailCept.php b/nette/doctrine/notejam/tests/acceptance/SetNewPasswordFailCept.php
deleted file mode 100644
index 26ee270fd..000000000
--- a/nette/doctrine/notejam/tests/acceptance/SetNewPasswordFailCept.php
+++ /dev/null
@@ -1,11 +0,0 @@
-wantTo('see user can not set new password without required fields');
-$I->testLogin();
-$I->amOnPage('/settings');
-$I->fillField('Current password', '');
-$I->fillField('New password', '');
-$I->fillField('Confirm', '');
-$I->click('Change password');
-$I->see('Current password is required');
-$I->see('New password is required');
diff --git a/nette/doctrine/notejam/tests/acceptance/SetNewPasswordInvalidCurrentPasswordCept.php b/nette/doctrine/notejam/tests/acceptance/SetNewPasswordInvalidCurrentPasswordCept.php
deleted file mode 100644
index a7aabf0af..000000000
--- a/nette/doctrine/notejam/tests/acceptance/SetNewPasswordInvalidCurrentPasswordCept.php
+++ /dev/null
@@ -1,10 +0,0 @@
-wantTo('see user can not set new password with invalid current password');
-$I->testLogin();
-$I->amOnPage('/settings');
-$I->fillField('Current password', 'pls');
-$I->fillField('New password', 'pass');
-$I->fillField('Confirm', 'pass');
-$I->click('Change password');
-$I->see('Invalid current password');
diff --git a/nette/doctrine/notejam/tests/acceptance/SetNewPasswordMismatchCept.php b/nette/doctrine/notejam/tests/acceptance/SetNewPasswordMismatchCept.php
deleted file mode 100644
index 1ded09583..000000000
--- a/nette/doctrine/notejam/tests/acceptance/SetNewPasswordMismatchCept.php
+++ /dev/null
@@ -1,10 +0,0 @@
-wantTo('see user can not set new password without confirming new password');
-$I->testLogin();
-$I->amOnPage('/settings');
-$I->fillField('Current password', 'pass');
-$I->fillField('New password', 'pls');
-$I->fillField('Confirm', 'pass');
-$I->click('Change password');
-$I->see('New passwords must match');
diff --git a/nette/doctrine/notejam/tests/acceptance/SignInCept.php b/nette/doctrine/notejam/tests/acceptance/SignInCept.php
deleted file mode 100644
index bae44a2a5..000000000
--- a/nette/doctrine/notejam/tests/acceptance/SignInCept.php
+++ /dev/null
@@ -1,5 +0,0 @@
-wantTo('see user can successfully sign in');
-$I->testLogin();
-$I->see("My pads");
diff --git a/nette/doctrine/notejam/tests/acceptance/SignInFailCept.php b/nette/doctrine/notejam/tests/acceptance/SignInFailCept.php
deleted file mode 100644
index e123b018e..000000000
--- a/nette/doctrine/notejam/tests/acceptance/SignInFailCept.php
+++ /dev/null
@@ -1,10 +0,0 @@
-wantTo('see user can not sign in without required fields');
-$I->amOnPage('/signin');
-$I->see('Sign in');
-$I->fillField("Email", '');
-$I->fillField("Password", '');
-$I->click('Sign in', ['css' => 'form.sign-in']);
-$I->see('Email is required');
-$I->see('Password is required');
diff --git a/nette/doctrine/notejam/tests/acceptance/SignInInvalidEmailCept.php b/nette/doctrine/notejam/tests/acceptance/SignInInvalidEmailCept.php
deleted file mode 100644
index 0298b64a8..000000000
--- a/nette/doctrine/notejam/tests/acceptance/SignInInvalidEmailCept.php
+++ /dev/null
@@ -1,5 +0,0 @@
-wantTo('see user can not sign in with invalid email');
-$I->testLogin('invalid@example.com', 'pass');
-$I->see("User 'invalid@example.com' not found.");
diff --git a/nette/doctrine/notejam/tests/acceptance/SignInInvalidPasswordCept.php b/nette/doctrine/notejam/tests/acceptance/SignInInvalidPasswordCept.php
deleted file mode 100644
index 2e8b58871..000000000
--- a/nette/doctrine/notejam/tests/acceptance/SignInInvalidPasswordCept.php
+++ /dev/null
@@ -1,5 +0,0 @@
-wantTo('see user can not sign in with invalid password');
-$I->testLogin('john.doe@example.com', 'pls');
-$I->see('Invalid password');
diff --git a/nette/doctrine/notejam/tests/acceptance/SignUpAlreadyExistsCept.php b/nette/doctrine/notejam/tests/acceptance/SignUpAlreadyExistsCept.php
deleted file mode 100644
index 5e92ec0a7..000000000
--- a/nette/doctrine/notejam/tests/acceptance/SignUpAlreadyExistsCept.php
+++ /dev/null
@@ -1,10 +0,0 @@
-wantTo('see user can not sign up with already registered email');
-$I->amOnPage('/signup');
-$I->fillField('Email', 'john.doe@example.com');
-$I->fillField('Password', 'pass');
-$I->fillField('confirm', 'pass');
-$I->click('Sign up', ['css' => 'form']);
-$I->seeInCurrentUrl('/signup');
-$I->see('Account with this email already exists');
diff --git a/nette/doctrine/notejam/tests/acceptance/SignUpCept.php b/nette/doctrine/notejam/tests/acceptance/SignUpCept.php
deleted file mode 100644
index df11ed43e..000000000
--- a/nette/doctrine/notejam/tests/acceptance/SignUpCept.php
+++ /dev/null
@@ -1,13 +0,0 @@
-wantTo('see user can successfully sign up');
-$I->amOnPage('/signup');
-$I->fillField('Email', 'test@example.com');
-$I->fillField('Password', 'qwerty');
-$I->fillField('confirm', 'qwerty');
-$I->click('Sign up', ['css' => 'form']);
-$I->seeInCurrentUrl('/signin');
-$I->see('Thank you for registration. Now you can sign in');
-$I->testLogin('test@example.com', 'qwerty');
-$I->seeCurrentUrlEquals('/');
-$I->see('My pads');
diff --git a/nette/doctrine/notejam/tests/acceptance/SignUpFailCept.php b/nette/doctrine/notejam/tests/acceptance/SignUpFailCept.php
deleted file mode 100644
index 250b1cd83..000000000
--- a/nette/doctrine/notejam/tests/acceptance/SignUpFailCept.php
+++ /dev/null
@@ -1,11 +0,0 @@
-wantTo('see user can not sign up without required fields');
-$I->amOnPage('/signup');
-$I->fillField('Email', '');
-$I->fillField('Password', '');
-$I->fillField('confirm', '');
-$I->click('Sign up', ['css' => 'form']);
-$I->seeInCurrentUrl('/signup');
-$I->see('Email is required');
-$I->see('Password is required');
diff --git a/nette/doctrine/notejam/tests/acceptance/SignUpInvalidEmailCept.php b/nette/doctrine/notejam/tests/acceptance/SignUpInvalidEmailCept.php
deleted file mode 100644
index 1cc57ad1e..000000000
--- a/nette/doctrine/notejam/tests/acceptance/SignUpInvalidEmailCept.php
+++ /dev/null
@@ -1,10 +0,0 @@
-wantTo('see user can not sign up with invalid email');
-$I->amOnPage('/signup');
-$I->fillField('Email', 'abcd');
-$I->fillField('Password', 'pass');
-$I->fillField('confirm', 'pass');
-$I->click('Sign up', ['css' => 'form']);
-$I->seeInCurrentUrl('/signup');
-$I->see('Please enter a valid email address.');
diff --git a/nette/doctrine/notejam/tests/acceptance/SignUpPasswordMismatchCept.php b/nette/doctrine/notejam/tests/acceptance/SignUpPasswordMismatchCept.php
deleted file mode 100644
index e1e083f19..000000000
--- a/nette/doctrine/notejam/tests/acceptance/SignUpPasswordMismatchCept.php
+++ /dev/null
@@ -1,10 +0,0 @@
-wantTo('see user can not sign up without confirming password');
-$I->amOnPage('/signup');
-$I->fillField('Email', 'test@example.com');
-$I->fillField('Password', 'pass');
-$I->fillField('confirm', 'pls');
-$I->click('Sign up', ['css' => 'form']);
-$I->seeInCurrentUrl('/signup');
-$I->see('Passwords must match');
diff --git a/nette/doctrine/notejam/tests/acceptance/_bootstrap.php b/nette/doctrine/notejam/tests/acceptance/_bootstrap.php
deleted file mode 100644
index 8a8855580..000000000
--- a/nette/doctrine/notejam/tests/acceptance/_bootstrap.php
+++ /dev/null
@@ -1,2 +0,0 @@
-
- Options -Indexes
-
-
-# enable cool URL
-
- RewriteEngine On
- # RewriteBase /
-
- # prevents files starting with dot to be viewed by browser
- RewriteRule /\.|^\. - [F]
-
- # front controller
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteCond %{REQUEST_FILENAME} !-d
- RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz|map)$ index.php [L]
-
-
-# enable gzip compression
-
-
- AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json application/xml image/svg+xml
-
-
diff --git a/nette/doctrine/notejam/www/.maintenance.php b/nette/doctrine/notejam/www/.maintenance.php
deleted file mode 100644
index 2ff638cb3..000000000
--- a/nette/doctrine/notejam/www/.maintenance.php
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
-Site is temporarily down for maintenance
-
-We're Sorry
-
-The site is temporarily down for maintenance. Please try again in a few minutes.
-
-div {
- display: none; }
-
-
- /* Grid */
- #grid .column,
- #grid .columns {
- background: #ddd;
- height: 25px;
- line-height: 25px;
- margin-bottom: 10px;
- text-align: center;
- text-transform: uppercase;
- color: #555;
- font-size: 12px;
- font-weight: bold;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px; }
- #grid .column:hover,
- #grid .columns:hover {
- background: #bbb;
- color: #333; }
- #grid .example-grid { overflow: hidden; }
-
- .post-button-note,
- .post-button-note a {
- font-size: 11px;
- color: #999; }
-
- #examples .four.columns a {
- text-decoration: none;
- }
- #examples .four.columns a:hover {
- text-decoration: underline;
- }
-
-
- .resize {
- position: fixed;
- bottom: 0;
- right: 0;
- height: 80px;
- width: 80px;
- background: url(images/resize.png); }
-
-
- img {
- max-width: 100%;
- height: auto; }
-
- .gist-meta { display: none !important;}
-
- ul ul ul li { margin-bottom: 3px; }
-
- .twitter-share-button { margin-bottom: -18px; }
-
- /* Table stylesheets */
- table {
- width: 100%;
- border-collapse: collapse;
- }
-
- table th, table td {
- padding: 10px 10px 9px;
- font-size: 13px;
- line-height: 18px;
- text-align: left;
- }
-
- table td {
- vertical-align: top;
- border-top: solid 1px #ddd;
- }
-
- table th {
- padding-top: 9px;
- font-weight: bold;
- vertical-align: middle;
- }
-
- table.condensed th, table.condensed td {
- padding: 5px 5px 4px;
- }
-
- table.bordered {
- border-collapse: separate;
- border: solid 1px #ddd;
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
- }
-
- table.bordered th + th,
- table.bordered th + td,
- table.bordered td + td {
- border-left: solid 1px #ddd;
- }
-
- .zebra-striped tbody tr:nth-child(odd) td,
- .zebra-striped tbody tr:nth-child(odd) th {
- background: #f5f5f5;
- }
-
-.carbonad,
-.carbonad-image,
-.carbonad-text,
-.carbonad-tag {
- background: none !important;
- border: none !important;
- margin-left: 0 !important;
-}
-.carbonad-tag {
- margin-top: 6px !important;
- padding-top: 0 !important;
-}
-.carbonad-text {
- height: auto !important;
-}
-.carbonad-image {
- margin-top: 0 !important;
-}
-
-.hidden-text {
- font-size: 12px;
- color: #999;
-}
-
-td.date, th.date {
- text-align: right;
-}
-
-td.date {
- font-style: italic;
-}
-
-form.note input[type="text"], form.note textarea {
- width: 100%;
-}
-
-form hr {
- width: 218px;
- margin: 10px 0px;
-}
-
-form.note textarea {
- height: 250px;
-}
-
-div.content-area {
- min-height: 600px;
-}
-
-hr.footer {
- margin-bottom: 10px;
-}
-
-div.footer {
- margin-bottom: 10px;
- text-align: center;
- font-size: 12px;
-}
-
-form.sign-in {
- margin: 50px 0 0 0;
-}
-
-.sort_arrow {
- text-decoration: none;
-}
-
-.sort_arrow:hover {
- text-decoration: none;
- color: red;
-}
-
-div.sign-in-out-block {
- position: absolute;
- right: 14px;
- top: 8px;
- font-size: 12px;
-}
-
-div.sign-in-out-block a {
- /*text-decoration: none;*/
-}
-
-a.small-red {
- color: red;
- font-size: 12px;
-}
-
-table.notes {
- margin: 0 0 20px 0;
-}
-
-table.notes th.note {
- width: 72%;
-}
-
-table.notes td.pad {
- color: grey;
-}
-
-table.notes td.pad a {
- color: grey;
- text-decoration: underline;
- font-style: normal;
-}
-
-
-table.notes td.pad a:hover {
- color: black;
-}
-
-p.empty {
- color: grey;
- font-style: italic;
-}
-
-a.delete-note {
- float: right;
- font-size: 12px;
- color: red;
-}
-
-.red, input.red {
- color: red !important;
-}
-
-ul.errorlist, ul.errors {
- margin: -18px 0 0 0;
-}
-
-ul.errorlist li, ul.errors li {
- color: red;
-}
-
-.alert-area {
- text-align: center;
-}
-
-.alert {
- padding: 5px 8px;
- margin: 0 0 12px 0;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
-}
-
-.alert-success {
- color: #468847;
- background-color: #dff0d8;
- border: 1px solid #d6e9c6;
-}
-
-.alert-error {
- color: #b94a48;
- background-color: #f2dede;
- border: 1px solid #eed3d7;
-}
-
- /* Mobile */
- @media only screen and (max-width: 767px) {
- header h1 { font-size: 34px; line-height: 37px; }
- nav { position: relative; }
- nav ul,
- .carbonad {
- display: none;
- }
- #logo { text-align: left; }
- #examples .four.columns {
- padding-top: 30px;
- }
- }
-
- /* Mobile Landscape */
- @media only screen and (min-width: 480px) and (max-width: 767px) {
- nav ul {
- display: none;
- }
- }
-
- /* Non 960 */
- @media only screen and (max-width: 959px) {
- #logo {
- font-size: 21px;
- margin-bottom: 15px; }
- nav .button {
- padding: 9px 20px 11px; }
- }
-
- /* iPad Portrait/Browser */
- @media only screen and (min-width: 768px) and (max-width: 959px) {
- nav {
- width: 124px; }
- }
-
- /* Mobile/Browser */
- @media only screen and (max-width: 767px) {}
-
- /* Mobile Landscape/Browser */
- @media only screen and (min-width: 480px) and (max-width: 767px) {}
-
- /* Anything smaller than standard 960 */
- @media only screen and (max-width: 959px) {}
-
-
- /* iPad Portrait Only */
- @media only screen and (min-width: 768px) and (max-width: 959px) and (max-device-width: 1000px) {}
-
- /* Mobile Only */
- @media only screen and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Mobile Landscape Only */
- @media only screen and (min-width: 480px) and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Anything smaller than standard 960 on a device */
- @media only screen and (max-width: 959px) and (max-device-width: 1000px) {
- .resize { display: none; }
- }
-
diff --git a/nette/doctrine/notejam/www/favicon.ico b/nette/doctrine/notejam/www/favicon.ico
deleted file mode 100644
index b20cfd0f0..000000000
Binary files a/nette/doctrine/notejam/www/favicon.ico and /dev/null differ
diff --git a/nette/doctrine/notejam/www/index.php b/nette/doctrine/notejam/www/index.php
deleted file mode 100644
index 26a5aebd0..000000000
--- a/nette/doctrine/notejam/www/index.php
+++ /dev/null
@@ -1,8 +0,0 @@
-getByType('Nette\Application\Application')->run();
diff --git a/nette/doctrine/notejam/www/robots.txt b/nette/doctrine/notejam/www/robots.txt
deleted file mode 100644
index e69de29bb..000000000
diff --git a/nette/native_db/notejam/.gitignore b/nette/native_db/notejam/.gitignore
deleted file mode 100644
index 32b40f1f6..000000000
--- a/nette/native_db/notejam/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-log/*
-temp/*
-vendor/*
-!.gitignore
-app/config/config.local.neon
-
-tests/_output/*
diff --git a/nette/native_db/notejam/app/bootstrap.php b/nette/native_db/notejam/app/bootstrap.php
deleted file mode 100644
index 8fd851263..000000000
--- a/nette/native_db/notejam/app/bootstrap.php
+++ /dev/null
@@ -1,21 +0,0 @@
-setDebugMode('23.75.345.200'); // enable for your remote IP
-$configurator->enableDebugger(__DIR__ . '/../log');
-
-$configurator->setTempDirectory(__DIR__ . '/../temp');
-
-$configurator->createRobotLoader()
- ->addDirectory(__DIR__)
- ->register();
-
-$configurator->addConfig(__DIR__ . '/config/config.neon');
-$configurator->addConfig(__DIR__ . '/config/config.local.neon');
-
-$container = $configurator->createContainer();
-
-return $container;
diff --git a/nette/native_db/notejam/app/components/Notes/INotesFactory.php b/nette/native_db/notejam/app/components/Notes/INotesFactory.php
deleted file mode 100644
index 375c2e520..000000000
--- a/nette/native_db/notejam/app/components/Notes/INotesFactory.php
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
- Note ↑
- ↓
-
- Pad
-
- Last modified ↑
- ↓
-
-
-
- {$note->name}
-
- {if $note->pad_id}
- {$note->pad->name}
- {else}
- No pad
- {/if}
-
- {$note->updated_at|date:'d. M. Y'}
-
-
diff --git a/nette/native_db/notejam/app/components/Notes/Notes.php b/nette/native_db/notejam/app/components/Notes/Notes.php
deleted file mode 100644
index 5ebb20fc3..000000000
--- a/nette/native_db/notejam/app/components/Notes/Notes.php
+++ /dev/null
@@ -1,42 +0,0 @@
-notes = $notes;
- $this->pad = $pad;
- }
-
-
- /**
- * Renders the component.
- */
- public function render()
- {
- $template = $this->createTemplate();
- $template->setFile(__DIR__ . '/Notes.latte');
- $template->notes = $this->notes;
- $template->pad = $this->pad;
- $template->render();
- }
-
-}
diff --git a/nette/native_db/notejam/app/components/Pads/IPadsFactory.php b/nette/native_db/notejam/app/components/Pads/IPadsFactory.php
deleted file mode 100644
index 351e360bd..000000000
--- a/nette/native_db/notejam/app/components/Pads/IPadsFactory.php
+++ /dev/null
@@ -1,15 +0,0 @@
-
- My pads
-
-
- No pads yet
-
- New pad
-
-
diff --git a/nette/native_db/notejam/app/components/Pads/Pads.php b/nette/native_db/notejam/app/components/Pads/Pads.php
deleted file mode 100644
index bd7f96bba..000000000
--- a/nette/native_db/notejam/app/components/Pads/Pads.php
+++ /dev/null
@@ -1,35 +0,0 @@
-pads = $pads;
- }
-
-
- /**
- * Renders the component.
- */
- public function render()
- {
- $template = $this->createTemplate();
- $template->setFile(__DIR__ . '/Pads.latte');
- $template->pads = $this->pads;
- $template->render();
- }
-
-}
diff --git a/nette/native_db/notejam/app/components/UserBar/IUserBarFactory.php b/nette/native_db/notejam/app/components/UserBar/IUserBarFactory.php
deleted file mode 100644
index efa689371..000000000
--- a/nette/native_db/notejam/app/components/UserBar/IUserBarFactory.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
diff --git a/nette/native_db/notejam/app/components/UserBar/UserBar.php b/nette/native_db/notejam/app/components/UserBar/UserBar.php
deleted file mode 100644
index adf2d82e2..000000000
--- a/nette/native_db/notejam/app/components/UserBar/UserBar.php
+++ /dev/null
@@ -1,35 +0,0 @@
-user = $user;
- }
-
- /**
- * Renders the component.
- */
- public function render()
- {
- $template = $this->createTemplate();
- $template->setFile(__DIR__ . '/UserBar.latte');
- $template->render();
- }
-
-}
diff --git a/nette/native_db/notejam/app/config/config.example.neon b/nette/native_db/notejam/app/config/config.example.neon
deleted file mode 100644
index 24dfdf1f0..000000000
--- a/nette/native_db/notejam/app/config/config.example.neon
+++ /dev/null
@@ -1,3 +0,0 @@
-parameters:
- database:
- dsn: 'sqlite:%appDir%/../notejam.db'
diff --git a/nette/native_db/notejam/app/config/config.neon b/nette/native_db/notejam/app/config/config.neon
deleted file mode 100644
index d1a5d2533..000000000
--- a/nette/native_db/notejam/app/config/config.neon
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# WARNING: it is CRITICAL that this file & directory are NOT accessible directly via a web browser!
-# https://nette.org/security-warning
-#
-parameters:
-
-
-php:
- date.timezone: Europe/Prague
-
-
-application:
- errorPresenter: Error
- mapping:
- *: App\*Module\Presenters\*Presenter
-
-
-session:
- expiration: 14 days
-
-
-database:
- dsn: %database.dsn%
- options:
- lazy: yes
-
-
-services:
- - App\Model\UserManager
- - App\Model\NoteManager
- - App\Model\PadManager
- - App\Components\Notes\INotesFactory
- - App\Components\Pads\IPadsFactory
- - App\Components\UserBar\IUserBarFactory
- - App\Forms\Account\AccountSettingsFormFactory
- - App\Forms\Note\DeleteNoteFormFactory
- - App\Forms\Note\EditNoteFormFactory
- - App\Forms\Note\NewNoteFormFactory
- - App\Forms\Pad\DeletePadFormFactory
- - App\Forms\Pad\EditPadFormFactory
- - App\Forms\Pad\NewPadFormFactory
- - App\Forms\Sign\ForgottenPasswordFormFactory
- - App\Forms\Sign\SignInFormFactory
- - App\Forms\Sign\SignUpFormFactory
- router: App\RouterFactory::createRouter
diff --git a/nette/native_db/notejam/app/forms/Account/AccountSettingsFormFactory.php b/nette/native_db/notejam/app/forms/Account/AccountSettingsFormFactory.php
deleted file mode 100644
index 14a3e12f5..000000000
--- a/nette/native_db/notejam/app/forms/Account/AccountSettingsFormFactory.php
+++ /dev/null
@@ -1,69 +0,0 @@
-userManager = $userManager;
- $this->user = $user;
- }
-
- /**
- * Creates Account Settings Form.
- * @return Form
- */
- public function create()
- {
- $form = new Form;
- $form->addPassword('current', 'Current password')
- ->setRequired('%label is required');
-
- $form->addPassword('new', 'New Password')
- ->setRequired('%label is required');
-
- $form->addPassword('confirm', 'Confirm New Password')
- ->setRequired('New password is required')
- ->addRule(Form::EQUAL, 'New passwords must match', $form['new']);
-
- $form->addSubmit('submit', 'Change Password');
-
- $form->onSuccess[] = [$this, 'formSucceeded'];
-
- return $form;
- }
-
- /**
- * Callback for Account Settings Form onSuccess event.
- * @param Form $form
- * @param ArrayHash $values
- */
- public function formSucceeded(Form $form, $values)
- {
- if (!$this->userManager->checkPassword($this->user->getId(), $values->current)) {
- $form->addError("Invalid current password");
- }
- $this->userManager->setNewPassword($this->user->getId(), $values->new);
- }
-
-}
diff --git a/nette/native_db/notejam/app/forms/Note/DeleteNoteFormFactory.php b/nette/native_db/notejam/app/forms/Note/DeleteNoteFormFactory.php
deleted file mode 100644
index 1adb01b4e..000000000
--- a/nette/native_db/notejam/app/forms/Note/DeleteNoteFormFactory.php
+++ /dev/null
@@ -1,45 +0,0 @@
-noteManager = $noteManager;
- }
-
- /**
- * Creates a DeleteNoteForm.
- * @param int $id Id of the note to be deleted.
- * @return Form
- */
- public function create($id)
- {
- $form = new Form;
- $form->addProtection(); // Adds CSRF protection
-
- $form->addSubmit('submit', 'Yes, I want to delete this note');
-
- $form->onSuccess[] = function (Form $form) use ($id) {
- if (!$this->noteManager->delete($id)) {
- $form->addError("Failed to delete note");
- }
- };
-
- return $form;
- }
-
-}
diff --git a/nette/native_db/notejam/app/forms/Note/EditNoteFormFactory.php b/nette/native_db/notejam/app/forms/Note/EditNoteFormFactory.php
deleted file mode 100644
index 894a43b81..000000000
--- a/nette/native_db/notejam/app/forms/Note/EditNoteFormFactory.php
+++ /dev/null
@@ -1,65 +0,0 @@
-padManager = $padManager;
- $this->noteManager = $noteManager;
- }
-
- /**
- * Creates an EditNoteForm.
- * @param int $id
- * @param string $name
- * @param string $text
- * @param int $pad
- * @return Form
- */
- public function create($id, $name, $text, $pad)
- {
- $form = new Form;
- $form->addText('name', 'Name')
- ->setDefaultValue($name)
- ->setRequired('%label is required');
-
- $form->addTextArea('text', 'Text')
- ->setDefaultValue($text)
- ->setRequired('%label is required');
-
- $form->addSelect('pad', 'Pad', $this->padManager->findAll()->fetchPairs('id', 'name'))
- ->setPrompt('Select pad')
- ->setDefaultValue($pad);
-
- $form->addSubmit('submit', 'Save');
-
- $form->onSuccess[] = function (Form $form, $values) use ($id) {
- if (!$this->noteManager->update($id, $values->name, $values->text, $values->pad)) {
- $form->addError("Failed to edit pad");
- }
- };
-
- return $form;
- }
-
-}
diff --git a/nette/native_db/notejam/app/forms/Note/NewNoteFormFactory.php b/nette/native_db/notejam/app/forms/Note/NewNoteFormFactory.php
deleted file mode 100644
index b99d46fb0..000000000
--- a/nette/native_db/notejam/app/forms/Note/NewNoteFormFactory.php
+++ /dev/null
@@ -1,68 +0,0 @@
-padManager = $padManager;
- $this->noteManager = $noteManager;
- }
-
- /**
- * Creates a NewNoteForm.
- * @param int|NULL $pad Id of the default pad. Can be NULL.
- * @return Form
- */
- public function create($pad)
- {
- $form = new Form;
- $form->addText('name', 'Name')
- ->setRequired('%label is required');
-
- $form->addTextArea('text', 'Text')
- ->setRequired('%label is required');
-
- $form->addSelect('pad', 'Pad', $this->padManager->findAll()->fetchPairs('id', 'name'))
- ->setPrompt('Select pad')
- ->setDefaultValue($pad);
-
- $form->addSubmit('submit', 'Save');
-
- $form->onSuccess[] = [$this, 'formSucceeded'];
- return $form;
- }
-
- /**
- * Callback for NewNoteForm onSuccess event.
- * @param Form $form
- * @param ArrayHash $values
- */
- public function formSucceeded(Form $form, $values)
- {
- if (!$this->noteManager->add($values->name, $values->text, $values->pad)) {
- $form->addError("Failed to create pad");
- }
- }
-
-}
diff --git a/nette/native_db/notejam/app/forms/Pad/DeletePadFormFactory.php b/nette/native_db/notejam/app/forms/Pad/DeletePadFormFactory.php
deleted file mode 100644
index ebacdf538..000000000
--- a/nette/native_db/notejam/app/forms/Pad/DeletePadFormFactory.php
+++ /dev/null
@@ -1,46 +0,0 @@
-padManager = $padManager;
- }
-
- /**
- * Creates a DeletePadForm.
- * @param int $id Id of the pad to be deleted.
- * @return Form
- */
- public function create($id)
- {
- $form = new Form;
- $form->addProtection(); // Adds CSRF protection
-
- $form->addSubmit('submit', 'Yes, I want to delete this pad');
-
- $form->onSuccess[] = function (Form $form) use ($id) {
- if (!$this->padManager->delete($id)) {
- $form->addError("Failed to delete pad");
- }
- };
-
- return $form;
- }
-
-}
diff --git a/nette/native_db/notejam/app/forms/Pad/EditPadFormFactory.php b/nette/native_db/notejam/app/forms/Pad/EditPadFormFactory.php
deleted file mode 100644
index 62a9510ad..000000000
--- a/nette/native_db/notejam/app/forms/Pad/EditPadFormFactory.php
+++ /dev/null
@@ -1,49 +0,0 @@
-padManager = $padManager;
- }
-
- /**
- * Creates an EditPadForm.
- * @param int $id Id of the pad to be edited.
- * @param string $name Current name of the pad.
- * @return Form
- */
- public function create($id, $name)
- {
- $form = new Form;
- $form->addText('name', 'Name')
- ->setDefaultValue($name)
- ->setRequired('%label is required');
-
- $form->addSubmit('submit', 'Save');
-
- $form->onSuccess[] = function (Form $form, $values) use ($id) {
- if (!$this->padManager->update($id, $values->name)) {
- $form->addError("Failed to edit pad");
- }
- };
-
- return $form;
- }
-
-}
diff --git a/nette/native_db/notejam/app/forms/Pad/NewPadFormFactory.php b/nette/native_db/notejam/app/forms/Pad/NewPadFormFactory.php
deleted file mode 100644
index b4ca697ea..000000000
--- a/nette/native_db/notejam/app/forms/Pad/NewPadFormFactory.php
+++ /dev/null
@@ -1,54 +0,0 @@
-padManager = $padManager;
- }
-
- /**
- * Creates a NewPadForm.
- * @return Form
- */
- public function create()
- {
- $form = new Form;
- $form->addText('name', 'Name')
- ->setRequired('%label is required');
-
- $form->addSubmit('submit', 'Save');
-
- $form->onSuccess[] = [$this, 'formSucceeded'];
- return $form;
- }
-
- /**
- * Callback for NewPadForm onSuccess event.
- * @param Form $form
- * @param ArrayHash $values
- */
- public function formSucceeded(Form $form, $values)
- {
- if (!$this->padManager->add($values->name)) {
- $form->addError("Failed to create new pad");
- }
- }
-
-}
diff --git a/nette/native_db/notejam/app/forms/Sign/ForgottenPasswordFormFactory.php b/nette/native_db/notejam/app/forms/Sign/ForgottenPasswordFormFactory.php
deleted file mode 100644
index 3fb12cabd..000000000
--- a/nette/native_db/notejam/app/forms/Sign/ForgottenPasswordFormFactory.php
+++ /dev/null
@@ -1,84 +0,0 @@
-userManager = $userManager;
- $this->mailer = $mailer;
- }
-
- /**
- * Creates a ForgottenPasswordForm.
- * @return Form
- */
- public function create()
- {
- $form = new Form;
- $form->addText('email', 'Email')
- ->setRequired('%label is required')
- ->addRule(Form::EMAIL, 'Invalid %label');
-
- $form->addSubmit('submit', 'Get new password');
-
- $form->onSuccess[] = [$this, 'formSucceeded'];
- return $form;
- }
-
- /**
- * Callback for ForgottenPasswordForm onSuccess event.
- * @param Form $form
- * @param ArrayHash $values
- */
- public function formSucceeded(Form $form, $values)
- {
- $user = $this->userManager->findByEmail($values->email);
- if (!$user) {
- $form->addError('No user with given email found');
- return;
- }
- $password = Nette\Utils\Random::generate(10);
- $this->userManager->setNewPassword($user->id, $password);
-
- try {
- // !!! Never send passwords through email !!!
- // This is only for demonstration purposes of Notejam.
- // Ideally, you can create a unique link where user can change his password
- // himself for limited amount of time, and then send the link.
- $mail = new Nette\Mail\Message();
- $mail->setFrom('noreply@notejamapp.com', 'Notejamapp');
- $mail->addTo($user->email);
- $mail->setSubject('New notejam password');
- $mail->setBody(sprintf('Your new password: %s', $password));
- $this->mailer->send($mail);
-
- } catch (Nette\Mail\SendException $e) {
- Debugger::log($e, Debugger::EXCEPTION);
- $form->addError('Could not send email with new password');
- }
- }
-
-}
diff --git a/nette/native_db/notejam/app/forms/Sign/SignInFormFactory.php b/nette/native_db/notejam/app/forms/Sign/SignInFormFactory.php
deleted file mode 100644
index 7737e36db..000000000
--- a/nette/native_db/notejam/app/forms/Sign/SignInFormFactory.php
+++ /dev/null
@@ -1,60 +0,0 @@
-user = $user;
- }
-
- /**
- * Creates a SignInForm.
- * @return Form
- */
- public function create()
- {
- $form = new Form;
-
- $form->addText('email', 'Email')
- ->setRequired('%label is required');
-
- $form->addPassword('password', 'Password')
- ->setRequired('%label is required');
-
- $form->addSubmit('submit', 'Sign In');
-
- $form->onSuccess[] = [$this, 'formSucceeded'];
- return $form;
- }
-
- /**
- * Callback for SignInForm onSuccess event.
- * @param Form $form
- * @param ArrayHash $values
- */
- public function formSucceeded(Form $form, $values)
- {
- try {
- $this->user->login($values->email, $values->password);
- } catch (Nette\Security\AuthenticationException $e) {
- $form->addError($e->getMessage());
- }
- }
-
-}
diff --git a/nette/native_db/notejam/app/forms/Sign/SignUpFormFactory.php b/nette/native_db/notejam/app/forms/Sign/SignUpFormFactory.php
deleted file mode 100644
index 06b1d2519..000000000
--- a/nette/native_db/notejam/app/forms/Sign/SignUpFormFactory.php
+++ /dev/null
@@ -1,65 +0,0 @@
-userManager = $userManager;
- }
-
- /**
- * Creates a SignUpForm.
- * @return Form
- */
- public function create()
- {
- $form = new Form;
- $form->addText('email', 'Email')
- ->setRequired('%label is required')
- ->addRule(Form::EMAIL, 'Invalid email');
-
- $form->addPassword('password', 'Password')
- ->setRequired('%label is required');
-
- $form->addPassword('confirm', 'Confirm Password')
- ->setRequired('%label is required')
- ->addRule(Form::EQUAL, 'Passwords must match', $form['password']);
-
- $form->addSubmit('submit', 'Sign Up');
-
- $form->onSuccess[] = [$this, 'formSucceeded'];
- return $form;
- }
-
- /**
- * Callback for SignUpForm onSuccess event.
- * @param Form $form
- * @param ArrayHash $values
- */
- public function formSucceeded(Form $form, $values)
- {
- try {
- $this->userManager->add($values->email, $values->password);
- } catch (DuplicateNameException $e) {
- $form->addError($e->getMessage());
- }
- }
-
-}
diff --git a/nette/native_db/notejam/app/helpers/OrderHelper.php b/nette/native_db/notejam/app/helpers/OrderHelper.php
deleted file mode 100644
index 72d2296ca..000000000
--- a/nette/native_db/notejam/app/helpers/OrderHelper.php
+++ /dev/null
@@ -1,25 +0,0 @@
- 'name ASC',
- '-name' => 'name DESC',
- 'updated_at' => 'updated_at ASC',
- '-updated_at' => 'updated_at DESC'
- ];
- return isset($ordering[$orderBy]) ? $ordering[$orderBy] : $ordering['name'];
- }
-
-}
diff --git a/nette/native_db/notejam/app/model/NoteManager.php b/nette/native_db/notejam/app/model/NoteManager.php
deleted file mode 100644
index be5c9151b..000000000
--- a/nette/native_db/notejam/app/model/NoteManager.php
+++ /dev/null
@@ -1,121 +0,0 @@
-database = $database;
- $this->user = $user;
- }
-
- /**
- * Finds note with given id.
- * @param int $id
- * @return bool|mixed|Nette\Database\Table\IRow
- */
- public function find($id)
- {
- return $this->findAll()->where('id', $id)->fetch();
- }
-
- /**
- * Finds all notes.
- * @return Nette\Database\Table\Selection
- */
- public function findAll()
- {
- return $this->getTable()->where('user_id', $this->user->getId());
- }
-
- /**
- * Finds notes in given pad.
- * @param int $padId
- * @return Nette\Database\Table\Selection
- */
- public function findByPad($padId)
- {
- return $this->findAll()->where('pad_id', $padId);
- }
-
- /**
- * Adds new note.
- * @param string $name
- * @param string $text
- * @param int $padId
- * @return bool|int|Nette\Database\Table\IRow
- */
- public function add($name, $text, $padId)
- {
- return $this->getTable()->insert([
- 'name' => $name,
- 'text' => $text,
- 'pad_id' => $padId,
- 'user_id' => $this->user->getId(),
- 'created_at' => date('Y-m-d H:i:s'),
- 'updated_at' => date('Y-m-d H:i:s'),
- ]);
- }
-
- /**
- * Updates note with given id.
- * @param int $id
- * @param string $name
- * @param string $text
- * @param int $padId
- * @return int
- */
- public function update($id, $name, $text, $padId)
- {
- return $this->getTable()->where([
- 'id' => $id,
- 'user_id' => $this->user->getId(),
- ])->update([
- 'name' => $name,
- 'text' => $text,
- 'pad_id' => $padId,
- 'updated_at' => date('Y-m-d H:i:s'),
- ]);
- }
-
- /**
- * Deletes note with given id.
- * @param int $id
- * @return int
- */
- public function delete($id)
- {
- return $this->getTable()->where([
- 'id' => $id,
- 'user_id' => $this->user->getId(),
- ])->delete();
- }
-
- /**
- * @return Nette\Database\Table\Selection
- */
- protected function getTable()
- {
- return $this->database->table('notes');
- }
-
-}
diff --git a/nette/native_db/notejam/app/model/PadManager.php b/nette/native_db/notejam/app/model/PadManager.php
deleted file mode 100644
index 306d8f95f..000000000
--- a/nette/native_db/notejam/app/model/PadManager.php
+++ /dev/null
@@ -1,100 +0,0 @@
-database = $database;
- $this->user = $user;
- }
-
- /**
- * Finds pad with given id.
- * @param int $id
- * @return Nette\Database\Table\IRow|bool The pad or FALSE if not found.
- */
- public function find($id)
- {
- return $this->findAll()->where('id', $id)->fetch();
- }
-
- /**
- * Finds all pads.
- * @return Nette\Database\Table\Selection
- */
- public function findAll()
- {
- return $this->getTable()->where('user_id', $this->user->getId());
- }
-
- /**
- * Adds new pad.
- * @param string $name
- * @return bool|int|Nette\Database\Table\IRow
- */
- public function add($name)
- {
- return $this->getTable()->insert([
- 'name' => $name,
- 'user_id' => $this->user->getId(),
- ]);
- }
-
- /**
- * Updates pad with given id.
- * @param int $id
- * @param string $name
- * @return int
- */
- public function update($id, $name)
- {
- return $this->getTable()->where([
- 'id' => $id,
- 'user_id' => $this->user->getId(),
- ])->update([
- 'name' => $name,
- ]);
- }
-
- /**
- * Deletes pad with given id.
- * @param int $id
- * @return int
- */
- public function delete($id)
- {
- return $this->getTable()->where([
- 'id' => $id,
- 'user_id' => $this->user->getId(),
- ])->delete();
- }
-
- /**
- * @return Nette\Database\Table\Selection
- */
- protected function getTable()
- {
- return $this->database->table('pads');
- }
-
-}
diff --git a/nette/native_db/notejam/app/model/UserManager.php b/nette/native_db/notejam/app/model/UserManager.php
deleted file mode 100644
index 1365a33cb..000000000
--- a/nette/native_db/notejam/app/model/UserManager.php
+++ /dev/null
@@ -1,123 +0,0 @@
-database = $database;
- }
-
- /**
- * Performs an authentication.
- * @param array $credentials
- * @return Nette\Security\Identity
- * @throws Nette\Security\AuthenticationException
- */
- public function authenticate(array $credentials)
- {
- list($email, $password) = $credentials;
-
- $row = $this->findByEmail($email);
-
- if (!$row) {
- throw new Nette\Security\AuthenticationException(sprintf('Unknown user', $email), self::IDENTITY_NOT_FOUND);
-
- } elseif (!Passwords::verify($password, $row['password'])) {
- throw new Nette\Security\AuthenticationException('Invalid password', self::INVALID_CREDENTIAL);
-
- } elseif (Passwords::needsRehash($row['password'])) {
- $row->update([
- 'password' => Passwords::hash($password),
- ]);
- }
-
- $arr = $row->toArray();
- unset($arr['password']);
- return new Nette\Security\Identity($row['id'], null, $arr);
- }
-
-
- /**
- * Adds new user.
- * @param string $email
- * @param string $password
- * @throws DuplicateNameException
- */
- public function add($email, $password)
- {
- if ($this->getTable()->where('email', $email)->count() > 0) {
- throw new DuplicateNameException("User with given email already registered");
- }
-
- $this->getTable()->insert([
- 'email' => $email,
- 'password' => Passwords::hash($password),
- ]);
- }
-
- /**
- * @param $id
- * @param $password
- * @return bool
- */
- public function checkPassword($id, $password)
- {
- $user = $this->getTable()->get($id);
- return $user && Passwords::verify($password, $user->password);
- }
-
- /**
- * Changes password of the user with given id.
- * @param int $id
- * @param string $new
- * @return int
- */
- public function setNewPassword($id, $new)
- {
- return $this->getTable()->where('id', $id)->update([
- 'password' => Passwords::hash($new)
- ]);
- }
-
- /**
- * Finds user by given email.
- * @param string $email
- * @return bool|mixed|Nette\Database\Table\IRow
- */
- public function findByEmail($email)
- {
- return $this->getTable()->where('email', $email)->fetch();
- }
-
- /**
- * @return Nette\Database\Table\Selection
- */
- protected function getTable()
- {
- return $this->database->table('users');
- }
-
-}
-
-
-class DuplicateNameException extends \Exception
-{
-
-}
diff --git a/nette/native_db/notejam/app/presenters/AccountPresenter.php b/nette/native_db/notejam/app/presenters/AccountPresenter.php
deleted file mode 100644
index 0903c195e..000000000
--- a/nette/native_db/notejam/app/presenters/AccountPresenter.php
+++ /dev/null
@@ -1,35 +0,0 @@
-formFactory->create();
- $form->onError[] = function ($form) {
- foreach ($form->getErrors() as $error) {
- $this->flashMessage($error, 'error');
- }
- };
- $form->onSuccess[] = function () {
- $this->flashMessage('Password is successfully changed', 'success');
- $this->redirect('Homepage:');
- };
- return $form;
- }
-
-}
diff --git a/nette/native_db/notejam/app/presenters/BasePresenter.php b/nette/native_db/notejam/app/presenters/BasePresenter.php
deleted file mode 100644
index 96d1dacf8..000000000
--- a/nette/native_db/notejam/app/presenters/BasePresenter.php
+++ /dev/null
@@ -1,47 +0,0 @@
-userBarFactory->create();
- }
-
- /**
- * @return \App\Components\Pads\Pads
- */
- protected function createComponentPads()
- {
- $this->pads = $this->padManager->findAll();
- return $this->padsFactory->create($this->pads);
- }
-
-}
diff --git a/nette/native_db/notejam/app/presenters/Error4xxPresenter.php b/nette/native_db/notejam/app/presenters/Error4xxPresenter.php
deleted file mode 100644
index c25c651a2..000000000
--- a/nette/native_db/notejam/app/presenters/Error4xxPresenter.php
+++ /dev/null
@@ -1,21 +0,0 @@
-getCode()}.latte";
- $this->template->setFile(is_file($file) ? $file : __DIR__ . '/templates/Error/4xx.latte');
- }
-
-}
diff --git a/nette/native_db/notejam/app/presenters/ErrorPresenter.php b/nette/native_db/notejam/app/presenters/ErrorPresenter.php
deleted file mode 100644
index 6067dee05..000000000
--- a/nette/native_db/notejam/app/presenters/ErrorPresenter.php
+++ /dev/null
@@ -1,42 +0,0 @@
-logger = $logger;
- }
-
- /**
- * @return Nette\Application\IResponse
- */
- public function run(Nette\Application\Request $request)
- {
- $e = $request->getParameter('exception');
-
- if ($e instanceof Nette\Application\BadRequestException) {
- // $this->logger->log("HTTP code {$e->getCode()}: {$e->getMessage()} in {$e->getFile()}:{$e->getLine()}", 'access');
- return new Nette\Application\Responses\ForwardResponse($request->setPresenterName('Error4xx'));
- }
-
- $this->logger->log($e, ILogger::EXCEPTION);
- return new Nette\Application\Responses\CallbackResponse(function () {
- require __DIR__ . '/templates/Error/500.phtml';
- });
- }
-
-}
diff --git a/nette/native_db/notejam/app/presenters/HomepagePresenter.php b/nette/native_db/notejam/app/presenters/HomepagePresenter.php
deleted file mode 100644
index eaeacb42a..000000000
--- a/nette/native_db/notejam/app/presenters/HomepagePresenter.php
+++ /dev/null
@@ -1,51 +0,0 @@
-notesFactory->create($this->notes);
- }
-
- /**
- * Homepage:default.
- * @param string $order
- */
- public function actionDefault($order)
- {
- $this->notes = $this->noteManager->findAll();
- if ($order) {
- $this->notes->order(OrderHelper::translateParameterToColumns($order));
- }
- }
-
- /**
- * Homepage:default render.
- */
- public function renderDefault()
- {
- $this->template->notes = $this->notes;
- }
-
-}
diff --git a/nette/native_db/notejam/app/presenters/NotePresenter.php b/nette/native_db/notejam/app/presenters/NotePresenter.php
deleted file mode 100644
index ab344412b..000000000
--- a/nette/native_db/notejam/app/presenters/NotePresenter.php
+++ /dev/null
@@ -1,183 +0,0 @@
-editPadFormFactory->create($this->note->id, $this->note->name, $this->note->text, $this->note->pad_id);
- $form->onError[] = function ($form) {
- foreach ($form->getErrors() as $error) {
- $this->flashMessage($error, 'error');
- }
- };
- $form->onSuccess[] = function () {
- $this->flashMessage('Note successfully updated', 'success');
- $this->redirect('default', ['id' => $this->id]);
- };
- return $form;
- }
-
- /**
- * Creates DeleteNoteForm component.
- * Called automagically by the framework.
- * @return \Nette\Application\UI\Form
- */
- protected function createComponentDeleteNoteForm()
- {
- $form = $this->deletePadFormFactory->create($this->id);
- $form->onError[] = function ($form) {
- foreach ($form->getErrors() as $error) {
- $this->flashMessage($error, 'error');
- }
- };
- $form->onSuccess[] = function () {
- $this->flashMessage('Note successfully deleted', 'success');
- $this->redirect('Homepage:');
- };
- return $form;
- }
-
- /**
- * Creates NewNoteForm component.
- * Called automagically by the framework.
- * @return \Nette\Application\UI\Form
- */
- protected function createComponentNewNoteForm()
- {
- $form = $this->newPadFormFactory->create($this->padId);
- $form->onError[] = function ($form) {
- foreach ($form->getErrors() as $error) {
- $this->flashMessage($error, 'error');
- }
- };
- $form->onSuccess[] = function () {
- $this->flashMessage('Note successfully created', 'success');
- $this->redirect('Homepage:');
- };
- return $form;
- }
-
- /**
- * Note:default.
- * @param int $id
- * @throws BadRequestException
- */
- public function actionDefault($id)
- {
- $this->loadNote($id);
- $this->notes = $this->noteManager->findByPad($id);
- }
-
- /**
- * Note:default render.
- */
- public function renderDefault()
- {
- $this->template->note = $this->note;
- }
-
- /**
- * Note:edit.
- * @param int $id
- * @throws BadRequestException
- */
- public function actionEdit($id)
- {
- $this->loadNote($id);
- }
-
- /**
- * Note:edit render.
- */
- public function renderEdit()
- {
- $this->template->note = $this->note;
- }
-
- /**
- * Note:delete.
- * @param int $id
- * @throws BadRequestException
- */
- public function actionDelete($id)
- {
- $this->loadNote($id);
- }
-
- /**
- * Note:delete render.
- */
- public function renderDelete()
- {
- $this->template->note = $this->note;
- }
-
- /**
- * Note:new.
- * @param int $pad
- */
- public function actionNew($pad)
- {
- $this->padId = $pad;
- }
-
- /**
- * Loads note with given id and if not found, throws BadRequestException.
- * @param int $id
- * @throws BadRequestException
- */
- private function loadNote($id)
- {
- $this->id = $id;
- $this->note = $this->noteManager->find($this->id);
- if (!$this->note) {
- throw new BadRequestException("Pad with given id not found");
- }
- }
-
-}
diff --git a/nette/native_db/notejam/app/presenters/PadPresenter.php b/nette/native_db/notejam/app/presenters/PadPresenter.php
deleted file mode 100644
index c15961cc0..000000000
--- a/nette/native_db/notejam/app/presenters/PadPresenter.php
+++ /dev/null
@@ -1,189 +0,0 @@
-editPadFormFactory->create($this->id, $this->pad->name);
- $form->onError[] = function ($form) {
- foreach ($form->getErrors() as $error) {
- $this->flashMessage($error, 'error');
- }
- };
- $form->onSuccess[] = function () {
- $this->flashMessage('Pad successfully updated', 'success');
- $this->redirect('Homepage:');
- };
- return $form;
- }
-
- /**
- * Creates DeletePadForm component.
- * Called automagically by the framework.
- * @return \Nette\Application\UI\Form
- */
- protected function createComponentDeletePadForm()
- {
- $form = $this->deletePadFormFactory->create($this->id);
- $form->onError[] = function ($form) {
- foreach ($form->getErrors() as $error) {
- $this->flashMessage($error, 'error');
- }
- };
- $form->onSuccess[] = function () {
- $this->flashMessage('Pad successfully deleted', 'success');
- $this->redirect('Homepage:');
- };
- return $form;
- }
-
- /**
- * Creates NewPadForm component.
- * Called automagically by the framework.
- * @return \Nette\Application\UI\Form
- */
- protected function createComponentNewPadForm()
- {
- $form = $this->newPadFormFactory->create();
- $form->onError[] = function ($form) {
- foreach ($form->getErrors() as $error) {
- $this->flashMessage($error, 'error');
- }
- };
- $form->onSuccess[] = function () {
- $this->flashMessage('Pad successfully created', 'success');
- $this->redirect('Homepage:');
- };
- return $form;
- }
-
- /**
- * Creates Notes component.
- * Called automagically by the framework.
- * @return \App\Components\Notes\Notes
- */
- protected function createComponentNotes()
- {
- return $this->notesFactory->create($this->notes, $this->pad);
- }
-
- /**
- * Pad:default.
- * @param int $id
- * @param string|null $order
- * @throws BadRequestException
- */
- public function actionDefault($id, $order)
- {
- $this->loadPad($id);
- $this->notes = $this->noteManager->findByPad($id);
- if ($order) {
- $this->notes->order(OrderHelper::translateParameterToColumns($order));
- }
- }
-
- /**
- * Pad:default render.
- */
- public function renderDefault()
- {
- $this->template->pad = $this->pad;
- }
-
- /**
- * Pad:edit.
- * @param int $id
- * @throws BadRequestException
- */
- public function actionEdit($id)
- {
- $this->loadPad($id);
- }
-
- /**
- * Pad:edit render.
- */
- public function renderEdit()
- {
- $this->template->pad = $this->pad;
- }
-
- /**
- * Pad:delete.
- * @param int $id
- * @throws BadRequestException
- */
- public function actionDelete($id)
- {
- $this->loadPad($id);
- }
-
- /**
- * Pad:delete render.
- */
- public function renderDelete()
- {
- $this->template->pad = $this->pad;
- }
-
- /**
- * Loads pad with given id and if not found, throws BadRequestException.
- * @param int $id
- * @throws BadRequestException
- */
- private function loadPad($id)
- {
- $this->id = $id;
- $this->pad = $this->padManager->find($this->id);
- if (!$this->pad) {
- throw new BadRequestException("Pad with given id not found");
- }
- }
-
-}
diff --git a/nette/native_db/notejam/app/presenters/SecuredBasePresenter.php b/nette/native_db/notejam/app/presenters/SecuredBasePresenter.php
deleted file mode 100644
index d9838e6b1..000000000
--- a/nette/native_db/notejam/app/presenters/SecuredBasePresenter.php
+++ /dev/null
@@ -1,20 +0,0 @@
-user->isLoggedIn()) {
- $this->redirect('Sign:in', ['backlink' => $this->storeRequest()]);
- }
- }
-
-}
diff --git a/nette/native_db/notejam/app/presenters/SignPresenter.php b/nette/native_db/notejam/app/presenters/SignPresenter.php
deleted file mode 100644
index 8a51cb89d..000000000
--- a/nette/native_db/notejam/app/presenters/SignPresenter.php
+++ /dev/null
@@ -1,116 +0,0 @@
-forgottenPasswordFormFactory->create();
- $form->onError[] = function ($form) {
- foreach ($form->getErrors() as $error) {
- $this->flashMessage($error, 'error');
- }
- };
- $form->onSuccess[] = function () {
- $this->flashMessage('New password sent to your inbox', 'success');
- $this->redirect('Sign:in');
- };
- return $form;
- }
-
- /**
- * Creates SignInForm component.
- * Called automagically by the framework.
- * @return Nette\Application\UI\Form
- */
- protected function createComponentSignInForm()
- {
- $form = $this->signInFormFactory->create();
- $form->onError[] = function ($form) {
- foreach ($form->getErrors() as $error) {
- $this->flashMessage($error, 'error');
- }
- };
- $form->onSuccess[] = function () {
- $this->restoreRequest($this->backlink);
- $this->redirect('Homepage:');
- };
- return $form;
- }
-
-
- /**
- * Creates SignUpForm component.
- * Called automagically by the framework.
- * @return Nette\Application\UI\Form
- */
- protected function createComponentSignUpForm()
- {
- $form = $this->signUpFormFactory->create();
- $form->onError[] = function ($form) {
- foreach ($form->getErrors() as $error) {
- $this->flashMessage($error, 'error');
- }
- };
- $form->onSuccess[] = function () {
- $this->flashMessage('User is successfully created. Now you can sign in.', 'success');
- $this->redirect('Sign:in');
- };
- return $form;
- }
-
- /**
- * Sign:in.
- */
- public function actionIn()
- {
- if ($this->user->isLoggedIn()) {
- $this->redirect('Homepage:');
- }
- }
-
- /**
- * Sign:up.
- */
- public function actionUp()
- {
- if ($this->user->isLoggedIn()) {
- $this->redirect('Homepage:');
- }
- }
-
- /**
- * Sign:out.
- */
- public function actionOut()
- {
- $this->getUser()->logout(true);
- $this->flashMessage('You have been signed out.', 'info');
- $this->redirect('in');
- }
-
-}
diff --git a/nette/native_db/notejam/app/presenters/templates/@layout.latte b/nette/native_db/notejam/app/presenters/templates/@layout.latte
deleted file mode 100644
index 57cb82c51..000000000
--- a/nette/native_db/notejam/app/presenters/templates/@layout.latte
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- Notejam{ifset title}: {include title|striptags}{/ifset}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {if $user->isLoggedIn()}
- {control userBar}
- {else}
-
- {/if}
-
-
-
-
-
- {if $user->isLoggedIn() && !$presenter->isLinkCurrent('Account:settings')}
- {control pads}
- {/if}
-
-
-
-
-
-
-
-
-
-
-
diff --git a/nette/native_db/notejam/app/presenters/templates/Account/settings.latte b/nette/native_db/notejam/app/presenters/templates/Account/settings.latte
deleted file mode 100644
index d5e1a7424..000000000
--- a/nette/native_db/notejam/app/presenters/templates/Account/settings.latte
+++ /dev/null
@@ -1,13 +0,0 @@
-{block title}Account settings{/block}
-{block header}Account settings{/block}
-{block content}
-
- Current password
-
- New Password
-
- Confirm New Password
-
-
-
-{/block}
diff --git a/nette/native_db/notejam/app/presenters/templates/Error/403.latte b/nette/native_db/notejam/app/presenters/templates/Error/403.latte
deleted file mode 100644
index de00328e7..000000000
--- a/nette/native_db/notejam/app/presenters/templates/Error/403.latte
+++ /dev/null
@@ -1,7 +0,0 @@
-{block content}
-Access Denied
-
-You do not have permission to view this page. Please try contact the web
-site administrator if you believe you should be able to view this page.
-
-error 403
diff --git a/nette/native_db/notejam/app/presenters/templates/Error/404.latte b/nette/native_db/notejam/app/presenters/templates/Error/404.latte
deleted file mode 100644
index 022001c2a..000000000
--- a/nette/native_db/notejam/app/presenters/templates/Error/404.latte
+++ /dev/null
@@ -1,8 +0,0 @@
-{block content}
-Page Not Found
-
-The page you requested could not be found. It is possible that the address is
-incorrect, or that the page no longer exists. Please use a search engine to find
-what you are looking for.
-
-error 404
diff --git a/nette/native_db/notejam/app/presenters/templates/Error/405.latte b/nette/native_db/notejam/app/presenters/templates/Error/405.latte
deleted file mode 100644
index d42489233..000000000
--- a/nette/native_db/notejam/app/presenters/templates/Error/405.latte
+++ /dev/null
@@ -1,6 +0,0 @@
-{block content}
-Method Not Allowed
-
-The requested method is not allowed for the URL.
-
-error 405
diff --git a/nette/native_db/notejam/app/presenters/templates/Error/410.latte b/nette/native_db/notejam/app/presenters/templates/Error/410.latte
deleted file mode 100644
index 99bde92c1..000000000
--- a/nette/native_db/notejam/app/presenters/templates/Error/410.latte
+++ /dev/null
@@ -1,6 +0,0 @@
-{block content}
-Page Not Found
-
-The page you requested has been taken off the site. We apologize for the inconvenience.
-
-error 410
diff --git a/nette/native_db/notejam/app/presenters/templates/Error/4xx.latte b/nette/native_db/notejam/app/presenters/templates/Error/4xx.latte
deleted file mode 100644
index d5ce82f19..000000000
--- a/nette/native_db/notejam/app/presenters/templates/Error/4xx.latte
+++ /dev/null
@@ -1,4 +0,0 @@
-{block content}
-Oops...
-
-Your browser sent a request that this server could not understand or process.
diff --git a/nette/native_db/notejam/app/presenters/templates/Error/500.phtml b/nette/native_db/notejam/app/presenters/templates/Error/500.phtml
deleted file mode 100644
index 619611eac..000000000
--- a/nette/native_db/notejam/app/presenters/templates/Error/500.phtml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-Server Error
-
-
-
-
-
Server Error
-
-
We're sorry! The server encountered an internal error and
- was unable to complete your request. Please try again later.
-
-
error 500
-
diff --git a/nette/native_db/notejam/app/presenters/templates/Homepage/default.latte b/nette/native_db/notejam/app/presenters/templates/Homepage/default.latte
deleted file mode 100644
index 616841a40..000000000
--- a/nette/native_db/notejam/app/presenters/templates/Homepage/default.latte
+++ /dev/null
@@ -1,6 +0,0 @@
-{block title}All notes ({count($notes)}){/block}
-{block header}All notes ({count($notes)}){/block}
-{block content}
- {control notes}
- New note
-{/block}
diff --git a/nette/native_db/notejam/app/presenters/templates/Note/default.latte b/nette/native_db/notejam/app/presenters/templates/Note/default.latte
deleted file mode 100644
index 3f72e1232..000000000
--- a/nette/native_db/notejam/app/presenters/templates/Note/default.latte
+++ /dev/null
@@ -1,9 +0,0 @@
-{block title}{$note->name}{/block}
-{block header}{$note->name}{/block}
-{block content}
- Last edited {$note->updated_at|date:'d. M. Y'}
-
- Edit
- Delete it
-{/block}
diff --git a/nette/native_db/notejam/app/presenters/templates/Note/delete.latte b/nette/native_db/notejam/app/presenters/templates/Note/delete.latte
deleted file mode 100644
index 1ab2ab7f5..000000000
--- a/nette/native_db/notejam/app/presenters/templates/Note/delete.latte
+++ /dev/null
@@ -1,9 +0,0 @@
-{block title}{$note->name}{/block}
-{block header}{$note->name}{/block}
-{block content}
- Are you sure you want to delete the note?
-
-
- Cancel
-
-{/block}
diff --git a/nette/native_db/notejam/app/presenters/templates/Note/edit.latte b/nette/native_db/notejam/app/presenters/templates/Note/edit.latte
deleted file mode 100644
index 5066cc048..000000000
--- a/nette/native_db/notejam/app/presenters/templates/Note/edit.latte
+++ /dev/null
@@ -1,13 +0,0 @@
-{block title}{$note->name}{/block}
-{block header}{$note->name}{/block}
-{block content}
-
- Name
-
- Text
-
- Pad
-
-
-
-{/block}
diff --git a/nette/native_db/notejam/app/presenters/templates/Note/new.latte b/nette/native_db/notejam/app/presenters/templates/Note/new.latte
deleted file mode 100644
index 4b3f7daba..000000000
--- a/nette/native_db/notejam/app/presenters/templates/Note/new.latte
+++ /dev/null
@@ -1,13 +0,0 @@
-{block title}New note{/block}
-{block header}New note{/block}
-{block content}
-
- Name
-
- Text
-
- Pad
-
-
-
-{/block}
diff --git a/nette/native_db/notejam/app/presenters/templates/Pad/default.latte b/nette/native_db/notejam/app/presenters/templates/Pad/default.latte
deleted file mode 100644
index 86e3c6904..000000000
--- a/nette/native_db/notejam/app/presenters/templates/Pad/default.latte
+++ /dev/null
@@ -1,8 +0,0 @@
-{block title}New pad{/block}
-{block header}New pad{/block}
-{block content}
- {control notes}
- New note
-
- Pad settings
-{/block}
diff --git a/nette/native_db/notejam/app/presenters/templates/Pad/delete.latte b/nette/native_db/notejam/app/presenters/templates/Pad/delete.latte
deleted file mode 100644
index dbc159065..000000000
--- a/nette/native_db/notejam/app/presenters/templates/Pad/delete.latte
+++ /dev/null
@@ -1,9 +0,0 @@
-{block title}{$pad->name}{/block}
-{block header}{$pad->name}{/block}
-{block content}
- Are you sure you want to delete the pad?
-
-
- Cancel
-
-{/block}
diff --git a/nette/native_db/notejam/app/presenters/templates/Pad/edit.latte b/nette/native_db/notejam/app/presenters/templates/Pad/edit.latte
deleted file mode 100644
index 95decdce9..000000000
--- a/nette/native_db/notejam/app/presenters/templates/Pad/edit.latte
+++ /dev/null
@@ -1,11 +0,0 @@
-{block title}{$pad->name}{/block}
-{block header}{$pad->name}{/block}
-{block content}
-
- Name
-
-
-
-
-
-{/block}
diff --git a/nette/native_db/notejam/app/presenters/templates/Pad/new.latte b/nette/native_db/notejam/app/presenters/templates/Pad/new.latte
deleted file mode 100644
index 70acc715b..000000000
--- a/nette/native_db/notejam/app/presenters/templates/Pad/new.latte
+++ /dev/null
@@ -1,9 +0,0 @@
-{block title}New pad{/block}
-{block header}New pad{/block}
-{block content}
-
- Name
-
-
-
-{/block}
diff --git a/nette/native_db/notejam/app/presenters/templates/Sign/forgotten.latte b/nette/native_db/notejam/app/presenters/templates/Sign/forgotten.latte
deleted file mode 100644
index 7f2702b6d..000000000
--- a/nette/native_db/notejam/app/presenters/templates/Sign/forgotten.latte
+++ /dev/null
@@ -1,9 +0,0 @@
-{block title}Frogot password?{/block}
-{block header}Forgot password?{/block}
-{block content}
-
- Email
-
-
-
-{/block}
diff --git a/nette/native_db/notejam/app/presenters/templates/Sign/in.latte b/nette/native_db/notejam/app/presenters/templates/Sign/in.latte
deleted file mode 100644
index 0644d8aa9..000000000
--- a/nette/native_db/notejam/app/presenters/templates/Sign/in.latte
+++ /dev/null
@@ -1,13 +0,0 @@
-{block title}Sign In{/block}
-{block header}Sign In{/block}
-{block content}
-
- Email
-
- Password
-
- or Sign up
-
- Forgot password?
-
-{/block}
diff --git a/nette/native_db/notejam/app/presenters/templates/Sign/up.latte b/nette/native_db/notejam/app/presenters/templates/Sign/up.latte
deleted file mode 100644
index b742ab8ee..000000000
--- a/nette/native_db/notejam/app/presenters/templates/Sign/up.latte
+++ /dev/null
@@ -1,15 +0,0 @@
-{block title}Sign Up{/block}
-{block header}Sign Up{/block}
-{block content}
-
- Email
-
- Password
-
- Confirm
-
- or Sign in
-
- Forgot password?
-
-{/block}
diff --git a/nette/native_db/notejam/app/router/RouterFactory.php b/nette/native_db/notejam/app/router/RouterFactory.php
deleted file mode 100644
index c601dec2a..000000000
--- a/nette/native_db/notejam/app/router/RouterFactory.php
+++ /dev/null
@@ -1,40 +0,0 @@
-', 'Note:default');
- $router[] = new Route('/notes//edit', 'Note:edit');
- $router[] = new Route('/notes//delete', 'Note:delete');
-
- $router[] = new Route('/pads/create', 'Pad:new');
- $router[] = new Route('/pads/', 'Pad:default');
- $router[] = new Route('/pads//edit', 'Pad:edit');
- $router[] = new Route('/pads//delete', 'Pad:delete');
-
- $router[] = new Route('[/]', 'Homepage:default');
- return $router;
- }
-
-}
diff --git a/nette/native_db/notejam/bin/create-db.php b/nette/native_db/notejam/bin/create-db.php
deleted file mode 100644
index 5df629192..000000000
--- a/nette/native_db/notejam/bin/create-db.php
+++ /dev/null
@@ -1,29 +0,0 @@
-getByType('Nette\Database\Context');
-$db->getConnection()->query("
-CREATE TABLE IF NOT EXISTS users (
- id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
- email VARCHAR(75) NOT NULL,
- password VARCHAR(128) NOT NULL
-);");
-
-$db->getConnection()->query("
-CREATE TABLE IF NOT EXISTS pads (
- id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
- name VARCHAR(100) NOT NULL,
- user_id INTEGER NOT NULL REFERENCES users(id)
-);");
-
-$db->getConnection()->query("
-CREATE TABLE notes (
- id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
- pad_id INTEGER REFERENCES pads(id),
- user_id INTEGER NOT NULL REFERENCES users(id),
- name VARCHAR(100) NOT NULL,
- text text NOT NULL,
- created_at DATETIME NOT NULL,
- updated_at DATETIME NOT NULL
-);");
diff --git a/nette/native_db/notejam/codeception.yml b/nette/native_db/notejam/codeception.yml
deleted file mode 100644
index 15019d00a..000000000
--- a/nette/native_db/notejam/codeception.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-actor: Tester
-paths:
- tests: tests
- log: tests/_output
- data: tests/_data
- support: tests/_support
- envs: tests/_envs
-settings:
- bootstrap: _bootstrap.php
- colors: true
- memory_limit: 1024M
-extensions:
- enabled:
- - Codeception\Extension\RunFailed
-modules:
- config:
- Db:
- dsn: 'sqlite:notejam.db'
- user:
- password:
- dump: tests/_data/dump.sql
- populate: true
- cleanup: true
diff --git a/nette/native_db/notejam/composer.json b/nette/native_db/notejam/composer.json
deleted file mode 100644
index e261b7a05..000000000
--- a/nette/native_db/notejam/composer.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "name": "nette/sandbox",
- "description": "The sandbox is a pre-packaged Nette Framework project, basic configured structure for your application.",
- "homepage": "https://nette.org",
- "type": "project",
- "license": ["BSD-3-Clause", "GPL-2.0", "GPL-3.0"],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "require": {
- "php": ">= 5.3.7",
- "nette/application": "~2.3.6",
- "nette/bootstrap": "~2.3.0",
- "nette/caching": "~2.3.0",
- "nette/database": "~2.3.0",
- "nette/di": "~2.3.0",
- "nette/finder": "~2.3.0",
- "nette/forms": "~2.3.0",
- "nette/http": "~2.3.0",
- "nette/mail": "~2.3.0",
- "nette/robot-loader": "~2.3.0",
- "nette/safe-stream": "~2.3.0",
- "nette/security": "~2.3.0",
- "nette/utils": "~2.3.0",
- "latte/latte": "~2.3.0",
- "tracy/tracy": "~2.3.0",
- "dg/adminer-custom": "~1.6"
- },
- "require-dev": {
- "codeception/codeception": "*"
- }
-}
diff --git a/nette/native_db/notejam/composer.lock b/nette/native_db/notejam/composer.lock
deleted file mode 100644
index ca68de2e1..000000000
--- a/nette/native_db/notejam/composer.lock
+++ /dev/null
@@ -1,2697 +0,0 @@
-{
- "_readme": [
- "This file locks the dependencies of your project to a known state",
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
- "This file is @generated automatically"
- ],
- "hash": "42813a0174e5fbe7e251f6af01ccfeba",
- "content-hash": "9f640b3bb59ce0b58222c5594953b85f",
- "packages": [
- {
- "name": "dg/adminer-custom",
- "version": "v1.6.4",
- "source": {
- "type": "git",
- "url": "https://github.com/dg/adminer-custom.git",
- "reference": "5215a1fa29ae9fc4304a867ce972f252b12921b0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/dg/adminer-custom/zipball/5215a1fa29ae9fc4304a867ce972f252b12921b0",
- "reference": "5215a1fa29ae9fc4304a867ce972f252b12921b0",
- "shasum": ""
- },
- "type": "project",
- "notification-url": "https://packagist.org/downloads/",
- "description": "Customization for the best database management tool written in PHP, Adminer",
- "time": "2015-09-07 07:29:02"
- },
- {
- "name": "latte/latte",
- "version": "v2.3.7",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/latte.git",
- "reference": "b6e090e461c9cd88d60ae79a7713990b17b1531c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/latte/zipball/b6e090e461c9cd88d60ae79a7713990b17b1531c",
- "reference": "b6e090e461c9cd88d60ae79a7713990b17b1531c",
- "shasum": ""
- },
- "require": {
- "ext-tokenizer": "*",
- "php": ">=5.3.1"
- },
- "require-dev": {
- "nette/tester": "~1.3"
- },
- "suggest": {
- "ext-fileinfo": "to use filter |datastream",
- "ext-mbstring": "to use filters like lower, upper, capitalize, ..."
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "Latte: the amazing template engine for PHP",
- "homepage": "https://latte.nette.org",
- "keywords": [
- "templating",
- "twig"
- ],
- "time": "2015-11-07 22:54:05"
- },
- {
- "name": "nette/application",
- "version": "v2.3.7",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/application.git",
- "reference": "8e87ae81c2098abd7895bfd96d9fac1cd332abc3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/application/zipball/8e87ae81c2098abd7895bfd96d9fac1cd332abc3",
- "reference": "8e87ae81c2098abd7895bfd96d9fac1cd332abc3",
- "shasum": ""
- },
- "require": {
- "nette/component-model": "~2.2",
- "nette/http": "~2.2",
- "nette/reflection": "~2.2",
- "nette/security": "~2.2",
- "nette/utils": "~2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "latte/latte": "~2.3.0",
- "nette/di": "~2.3",
- "nette/forms": "~2.2",
- "nette/robot-loader": "~2.2",
- "nette/tester": "~1.3"
- },
- "suggest": {
- "latte/latte": "Allows using Latte in templates",
- "nette/forms": "Allows to use Nette\\Application\\UI\\Form"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "Nette Application MVC Component",
- "homepage": "https://nette.org",
- "time": "2015-10-13 14:33:28"
- },
- {
- "name": "nette/bootstrap",
- "version": "v2.3.3",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/bootstrap.git",
- "reference": "8e2db45c39a1fa24f88e94c7b2a62ad09e9a306e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/bootstrap/zipball/8e2db45c39a1fa24f88e94c7b2a62ad09e9a306e",
- "reference": "8e2db45c39a1fa24f88e94c7b2a62ad09e9a306e",
- "shasum": ""
- },
- "require": {
- "nette/di": "~2.3",
- "nette/utils": "~2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "latte/latte": "~2.2",
- "nette/application": "~2.3",
- "nette/caching": "~2.3",
- "nette/database": "~2.3",
- "nette/forms": "~2.3",
- "nette/http": "~2.3",
- "nette/mail": "~2.3",
- "nette/robot-loader": "~2.2",
- "nette/safe-stream": "~2.2",
- "nette/security": "~2.3",
- "nette/tester": "~1.3",
- "tracy/tracy": "~2.3"
- },
- "suggest": {
- "nette/robot-loader": "to use Configurator::createRobotLoader()",
- "tracy/tracy": "to use Configurator::enableDebugger()"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "http://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "http://nette.org/contributors"
- }
- ],
- "description": "Nette Bootstrap",
- "homepage": "http://nette.org",
- "time": "2015-07-11 21:07:11"
- },
- {
- "name": "nette/caching",
- "version": "v2.3.3",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/caching.git",
- "reference": "d4be13806d70c02d53b72cc63e93de6cf813f50f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/caching/zipball/d4be13806d70c02d53b72cc63e93de6cf813f50f",
- "reference": "d4be13806d70c02d53b72cc63e93de6cf813f50f",
- "shasum": ""
- },
- "require": {
- "nette/finder": "~2.2",
- "nette/utils": "~2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "latte/latte": "~2.3.0",
- "nette/di": "~2.3",
- "nette/tester": "~1.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "http://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "http://nette.org/contributors"
- }
- ],
- "description": "Nette Caching Component",
- "homepage": "http://nette.org",
- "time": "2015-07-11 21:09:42"
- },
- {
- "name": "nette/component-model",
- "version": "v2.2.4",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/component-model.git",
- "reference": "07bce436051fd92d084642ce7a47f00045e0d1e5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/component-model/zipball/07bce436051fd92d084642ce7a47f00045e0d1e5",
- "reference": "07bce436051fd92d084642ce7a47f00045e0d1e5",
- "shasum": ""
- },
- "require": {
- "nette/utils": "^2.3.5",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/tester": "~1.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "Nette Component Model",
- "homepage": "https://nette.org",
- "time": "2015-10-06 17:54:05"
- },
- {
- "name": "nette/database",
- "version": "v2.3.7",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/database.git",
- "reference": "32ab8af7abb405c6415ef335d3395dea9d575859"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/database/zipball/32ab8af7abb405c6415ef335d3395dea9d575859",
- "reference": "32ab8af7abb405c6415ef335d3395dea9d575859",
- "shasum": ""
- },
- "require": {
- "ext-pdo": "*",
- "nette/caching": "~2.2",
- "nette/utils": "^2.3.5",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "mockery/mockery": "~0.9.1",
- "nette/di": "~2.3",
- "nette/tester": "~1.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "Nette Database Component",
- "homepage": "https://nette.org",
- "time": "2015-10-05 13:16:36"
- },
- {
- "name": "nette/di",
- "version": "v2.3.6",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/di.git",
- "reference": "efa1d13f016b58b4a9200802c9c5b14d10d72e85"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/di/zipball/efa1d13f016b58b4a9200802c9c5b14d10d72e85",
- "reference": "efa1d13f016b58b4a9200802c9c5b14d10d72e85",
- "shasum": ""
- },
- "require": {
- "nette/neon": "^2.3.3",
- "nette/php-generator": "^2.3.3",
- "nette/utils": "~2.3",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/tester": "~1.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "http://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "http://nette.org/contributors"
- }
- ],
- "description": "Nette Dependency Injection Component",
- "homepage": "http://nette.org",
- "time": "2015-09-14 18:18:24"
- },
- {
- "name": "nette/finder",
- "version": "v2.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/finder.git",
- "reference": "38f803a03f4cddf352e28af70294c71f7026e516"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/finder/zipball/38f803a03f4cddf352e28af70294c71f7026e516",
- "reference": "38f803a03f4cddf352e28af70294c71f7026e516",
- "shasum": ""
- },
- "require": {
- "nette/utils": "~2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/tester": "~1.4"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "http://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "http://nette.org/contributors"
- }
- ],
- "description": "Nette Finder: Files Searching",
- "homepage": "http://nette.org",
- "time": "2015-07-11 21:13:50"
- },
- {
- "name": "nette/forms",
- "version": "v2.3.6",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/forms.git",
- "reference": "5e07a7b7180e5e88db9d44e12f1677e36b4f164b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/forms/zipball/5e07a7b7180e5e88db9d44e12f1677e36b4f164b",
- "reference": "5e07a7b7180e5e88db9d44e12f1677e36b4f164b",
- "shasum": ""
- },
- "require": {
- "nette/component-model": "~2.2",
- "nette/http": "~2.2",
- "nette/utils": "~2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "latte/latte": "~2.3.2",
- "nette/di": "~2.3",
- "nette/tester": "~1.3",
- "tracy/tracy": "~2.2"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "Nette Forms: greatly facilitates web forms",
- "homepage": "https://nette.org",
- "time": "2015-10-19 01:41:55"
- },
- {
- "name": "nette/http",
- "version": "v2.3.3",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/http.git",
- "reference": "ff2e4608391bca2444df9af6eaf8666ac853eb02"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/http/zipball/ff2e4608391bca2444df9af6eaf8666ac853eb02",
- "reference": "ff2e4608391bca2444df9af6eaf8666ac853eb02",
- "shasum": ""
- },
- "require": {
- "nette/utils": "~2.2, >=2.2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/di": "~2.3",
- "nette/tester": "~1.4"
- },
- "suggest": {
- "ext-fileinfo": "to detect type of uploaded files"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "http://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "http://nette.org/contributors"
- }
- ],
- "description": "Nette HTTP Component",
- "homepage": "http://nette.org",
- "time": "2015-07-19 16:17:50"
- },
- {
- "name": "nette/mail",
- "version": "v2.3.3",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/mail.git",
- "reference": "4ea303d96c6a80ffe357baf59d387f4fe2cfd412"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/mail/zipball/4ea303d96c6a80ffe357baf59d387f4fe2cfd412",
- "reference": "4ea303d96c6a80ffe357baf59d387f4fe2cfd412",
- "shasum": ""
- },
- "require": {
- "ext-iconv": "*",
- "nette/utils": "~2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/di": "~2.3",
- "nette/tester": "~1.3"
- },
- "suggest": {
- "ext-fileinfo": "to detect type of attached files"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "Nette Mail: Sending E-mails",
- "homepage": "https://nette.org",
- "time": "2015-10-05 12:58:01"
- },
- {
- "name": "nette/neon",
- "version": "v2.3.3",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/neon.git",
- "reference": "12bbb0e85ba8521dd291f4df0fe20a1b79aae32c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/neon/zipball/12bbb0e85ba8521dd291f4df0fe20a1b79aae32c",
- "reference": "12bbb0e85ba8521dd291f4df0fe20a1b79aae32c",
- "shasum": ""
- },
- "require": {
- "ext-iconv": "*",
- "php": ">=5.3.1"
- },
- "require-dev": {
- "nette/tester": "~1.4"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "http://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "http://nette.org/contributors"
- }
- ],
- "description": "Nette NEON: parser & generator for Nette Object Notation",
- "homepage": "http://ne-on.org",
- "time": "2015-08-22 15:23:30"
- },
- {
- "name": "nette/php-generator",
- "version": "v2.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/php-generator.git",
- "reference": "846028e9d885d2d8ec60823d995e1291bbe3eb69"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/php-generator/zipball/846028e9d885d2d8ec60823d995e1291bbe3eb69",
- "reference": "846028e9d885d2d8ec60823d995e1291bbe3eb69",
- "shasum": ""
- },
- "require": {
- "nette/utils": "~2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/tester": "~1.4"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "Nette PHP Generator",
- "homepage": "https://nette.org",
- "time": "2015-10-09 14:34:13"
- },
- {
- "name": "nette/reflection",
- "version": "v2.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/reflection.git",
- "reference": "9c2ed2a29f1f58125a0f19ffc987812d6b17d3e6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/reflection/zipball/9c2ed2a29f1f58125a0f19ffc987812d6b17d3e6",
- "reference": "9c2ed2a29f1f58125a0f19ffc987812d6b17d3e6",
- "shasum": ""
- },
- "require": {
- "ext-tokenizer": "*",
- "nette/caching": "~2.2",
- "nette/utils": "~2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/di": "~2.3",
- "nette/tester": "~1.4"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "http://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "http://nette.org/contributors"
- }
- ],
- "description": "Nette PHP Reflection Component",
- "homepage": "http://nette.org",
- "time": "2015-07-11 21:34:53"
- },
- {
- "name": "nette/robot-loader",
- "version": "v2.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/robot-loader.git",
- "reference": "69331d359bbc9e5f911c12b82187cac914d983fb"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/robot-loader/zipball/69331d359bbc9e5f911c12b82187cac914d983fb",
- "reference": "69331d359bbc9e5f911c12b82187cac914d983fb",
- "shasum": ""
- },
- "require": {
- "nette/caching": "~2.2",
- "nette/finder": "~2.3",
- "nette/utils": "~2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/tester": "~1.4"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "http://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "http://nette.org/contributors"
- }
- ],
- "description": "Nette RobotLoader: comfortable autoloading",
- "homepage": "http://nette.org",
- "time": "2015-07-11 21:20:57"
- },
- {
- "name": "nette/safe-stream",
- "version": "v2.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/safe-stream.git",
- "reference": "bf30db367b51a0932c44dcb9a378927644d48b2e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/safe-stream/zipball/bf30db367b51a0932c44dcb9a378927644d48b2e",
- "reference": "bf30db367b51a0932c44dcb9a378927644d48b2e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/tester": "~1.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3-dev"
- }
- },
- "autoload": {
- "files": [
- "src/loader.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "http://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "http://nette.org/contributors"
- }
- ],
- "description": "Nette SafeStream: Atomic Operations",
- "homepage": "http://nette.org",
- "time": "2015-07-11 20:59:15"
- },
- {
- "name": "nette/security",
- "version": "v2.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/security.git",
- "reference": "744264a42b506d63009d7e3853ed72b04c99e964"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/security/zipball/744264a42b506d63009d7e3853ed72b04c99e964",
- "reference": "744264a42b506d63009d7e3853ed72b04c99e964",
- "shasum": ""
- },
- "require": {
- "nette/utils": "~2.2",
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/di": "~2.3",
- "nette/http": "~2.3",
- "nette/tester": "~1.4"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "http://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "http://nette.org/contributors"
- }
- ],
- "description": "Nette Security: Access Control Component",
- "homepage": "http://nette.org",
- "time": "2015-07-11 21:22:53"
- },
- {
- "name": "nette/utils",
- "version": "v2.3.6",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/utils.git",
- "reference": "c9dfaec788eb65d5ef10cefed0ae63bc76febaa8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/utils/zipball/c9dfaec788eb65d5ef10cefed0ae63bc76febaa8",
- "reference": "c9dfaec788eb65d5ef10cefed0ae63bc76febaa8",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.1"
- },
- "conflict": {
- "nette/nette": "<2.2"
- },
- "require-dev": {
- "nette/tester": "~1.0"
- },
- "suggest": {
- "ext-gd": "to use Image",
- "ext-iconv": "to use Strings::webalize() and toAscii()",
- "ext-intl": "for script transliteration in Strings::webalize() and toAscii()",
- "ext-mbstring": "to use Strings::lower() etc..."
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "Nette Utility Classes",
- "homepage": "https://nette.org",
- "time": "2015-10-05 12:18:24"
- },
- {
- "name": "tracy/tracy",
- "version": "v2.3.6",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/tracy.git",
- "reference": "79831c75b6f48fcb897d25ccae5deec358cb2142"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/tracy/zipball/79831c75b6f48fcb897d25ccae5deec358cb2142",
- "reference": "79831c75b6f48fcb897d25ccae5deec358cb2142",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.1"
- },
- "require-dev": {
- "nette/di": "~2.3",
- "nette/tester": "~1.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src"
- ],
- "files": [
- "src/shortcuts.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0",
- "GPL-3.0"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "Tracy: useful PHP debugger",
- "homepage": "https://tracy.nette.org",
- "keywords": [
- "debug",
- "debugger",
- "nette"
- ],
- "time": "2015-10-28 23:49:21"
- }
- ],
- "packages-dev": [
- {
- "name": "codeception/codeception",
- "version": "2.1.4",
- "source": {
- "type": "git",
- "url": "https://github.com/Codeception/Codeception.git",
- "reference": "6a812e8a0d1b1db939a29b4dc14cb398b21b6112"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Codeception/Codeception/zipball/6a812e8a0d1b1db939a29b4dc14cb398b21b6112",
- "reference": "6a812e8a0d1b1db939a29b4dc14cb398b21b6112",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "ext-mbstring": "*",
- "facebook/webdriver": ">=1.0.1",
- "guzzlehttp/guzzle": ">=4.1.4 <7.0",
- "guzzlehttp/psr7": "~1.0",
- "php": ">=5.4.0",
- "phpunit/phpunit": "~4.8.0",
- "symfony/browser-kit": "~2.4",
- "symfony/console": "~2.4",
- "symfony/css-selector": "~2.4",
- "symfony/dom-crawler": "~2.4,!=2.4.5",
- "symfony/event-dispatcher": "~2.4",
- "symfony/finder": "~2.4",
- "symfony/yaml": "~2.4"
- },
- "require-dev": {
- "codeception/specify": "~0.3",
- "facebook/php-sdk-v4": "~4.0",
- "flow/jsonpath": "~0.2",
- "monolog/monolog": "~1.8",
- "pda/pheanstalk": "~2.0",
- "videlalvaro/php-amqplib": "~2.4"
- },
- "suggest": {
- "codeception/phpbuiltinserver": "Extension to start and stop PHP built-in web server for your tests",
- "codeception/specify": "BDD-style code blocks",
- "codeception/verify": "BDD-style assertions",
- "monolog/monolog": "Log test steps",
- "phpseclib/phpseclib": "Extension required to use the SFTP option in the FTP Module."
- },
- "bin": [
- "codecept"
- ],
- "type": "library",
- "extra": {
- "branch-alias": []
- },
- "autoload": {
- "psr-4": {
- "Codeception\\": "src\\Codeception",
- "Codeception\\Extension\\": "ext"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Bodnarchuk",
- "email": "davert@mail.ua",
- "homepage": "http://codegyre.com"
- }
- ],
- "description": "BDD-style testing framework",
- "homepage": "http://codeception.com/",
- "keywords": [
- "BDD",
- "TDD",
- "acceptance testing",
- "functional testing",
- "unit testing"
- ],
- "time": "2015-11-12 03:57:06"
- },
- {
- "name": "doctrine/instantiator",
- "version": "1.0.5",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/instantiator.git",
- "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
- "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3,<8.0-DEV"
- },
- "require-dev": {
- "athletic/athletic": "~0.1.8",
- "ext-pdo": "*",
- "ext-phar": "*",
- "phpunit/phpunit": "~4.0",
- "squizlabs/php_codesniffer": "~2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com",
- "homepage": "http://ocramius.github.com/"
- }
- ],
- "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
- "homepage": "https://github.com/doctrine/instantiator",
- "keywords": [
- "constructor",
- "instantiate"
- ],
- "time": "2015-06-14 21:17:01"
- },
- {
- "name": "facebook/webdriver",
- "version": "1.0.4",
- "source": {
- "type": "git",
- "url": "https://github.com/facebook/php-webdriver.git",
- "reference": "a6e209a309bf7cd71acf15476f40b11a25d5a79d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/a6e209a309bf7cd71acf15476f40b11a25d5a79d",
- "reference": "a6e209a309bf7cd71acf15476f40b11a25d5a79d",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.19"
- },
- "require-dev": {
- "phpunit/phpunit": "4.6.*"
- },
- "suggest": {
- "phpdocumentor/phpdocumentor": "2.*"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Facebook\\WebDriver\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "description": "A PHP client for WebDriver",
- "homepage": "https://github.com/facebook/php-webdriver",
- "keywords": [
- "facebook",
- "php",
- "selenium",
- "webdriver"
- ],
- "time": "2015-11-03 22:17:22"
- },
- {
- "name": "guzzlehttp/guzzle",
- "version": "6.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/guzzle.git",
- "reference": "c6851d6e48f63b69357cbfa55bca116448140e0c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/c6851d6e48f63b69357cbfa55bca116448140e0c",
- "reference": "c6851d6e48f63b69357cbfa55bca116448140e0c",
- "shasum": ""
- },
- "require": {
- "guzzlehttp/promises": "~1.0",
- "guzzlehttp/psr7": "~1.1",
- "php": ">=5.5.0"
- },
- "require-dev": {
- "ext-curl": "*",
- "phpunit/phpunit": "~4.0",
- "psr/log": "~1.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "6.1-dev"
- }
- },
- "autoload": {
- "files": [
- "src/functions_include.php"
- ],
- "psr-4": {
- "GuzzleHttp\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "description": "Guzzle is a PHP HTTP client library",
- "homepage": "http://guzzlephp.org/",
- "keywords": [
- "client",
- "curl",
- "framework",
- "http",
- "http client",
- "rest",
- "web service"
- ],
- "time": "2015-11-23 00:47:50"
- },
- {
- "name": "guzzlehttp/promises",
- "version": "1.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/promises.git",
- "reference": "b1e1c0d55f8083c71eda2c28c12a228d708294ea"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/b1e1c0d55f8083c71eda2c28c12a228d708294ea",
- "reference": "b1e1c0d55f8083c71eda2c28c12a228d708294ea",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Promise\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "description": "Guzzle promises library",
- "keywords": [
- "promise"
- ],
- "time": "2015-10-15 22:28:00"
- },
- {
- "name": "guzzlehttp/psr7",
- "version": "1.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/psr7.git",
- "reference": "4d0bdbe1206df7440219ce14c972aa57cc5e4982"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/4d0bdbe1206df7440219ce14c972aa57cc5e4982",
- "reference": "4d0bdbe1206df7440219ce14c972aa57cc5e4982",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0",
- "psr/http-message": "~1.0"
- },
- "provide": {
- "psr/http-message-implementation": "1.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Psr7\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "description": "PSR-7 message implementation",
- "keywords": [
- "http",
- "message",
- "stream",
- "uri"
- ],
- "time": "2015-11-03 01:34:55"
- },
- {
- "name": "phpdocumentor/reflection-docblock",
- "version": "2.0.4",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8",
- "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "suggest": {
- "dflydev/markdown": "~1.0",
- "erusev/parsedown": "~1.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "phpDocumentor": [
- "src/"
- ]
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "mike.vanriel@naenius.com"
- }
- ],
- "time": "2015-02-03 12:10:50"
- },
- {
- "name": "phpspec/prophecy",
- "version": "v1.5.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpspec/prophecy.git",
- "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4745ded9307786b730d7a60df5cb5a6c43cf95f7",
- "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.0.2",
- "phpdocumentor/reflection-docblock": "~2.0",
- "sebastian/comparator": "~1.1"
- },
- "require-dev": {
- "phpspec/phpspec": "~2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Prophecy\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Konstantin Kudryashov",
- "email": "ever.zet@gmail.com",
- "homepage": "http://everzet.com"
- },
- {
- "name": "Marcello Duarte",
- "email": "marcello.duarte@gmail.com"
- }
- ],
- "description": "Highly opinionated mocking framework for PHP 5.3+",
- "homepage": "https://github.com/phpspec/prophecy",
- "keywords": [
- "Double",
- "Dummy",
- "fake",
- "mock",
- "spy",
- "stub"
- ],
- "time": "2015-08-13 10:07:40"
- },
- {
- "name": "phpunit/php-code-coverage",
- "version": "2.2.4",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "phpunit/php-file-iterator": "~1.3",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-token-stream": "~1.3",
- "sebastian/environment": "^1.3.2",
- "sebastian/version": "~1.0"
- },
- "require-dev": {
- "ext-xdebug": ">=2.1.4",
- "phpunit/phpunit": "~4"
- },
- "suggest": {
- "ext-dom": "*",
- "ext-xdebug": ">=2.2.1",
- "ext-xmlwriter": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.2.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
- "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
- "keywords": [
- "coverage",
- "testing",
- "xunit"
- ],
- "time": "2015-10-06 15:47:00"
- },
- {
- "name": "phpunit/php-file-iterator",
- "version": "1.4.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
- "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "FilterIterator implementation that filters files based on a list of suffixes.",
- "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
- "keywords": [
- "filesystem",
- "iterator"
- ],
- "time": "2015-06-21 13:08:43"
- },
- {
- "name": "phpunit/php-text-template",
- "version": "1.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Simple template engine.",
- "homepage": "https://github.com/sebastianbergmann/php-text-template/",
- "keywords": [
- "template"
- ],
- "time": "2015-06-21 13:50:34"
- },
- {
- "name": "phpunit/php-timer",
- "version": "1.0.7",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
- "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Utility class for timing",
- "homepage": "https://github.com/sebastianbergmann/php-timer/",
- "keywords": [
- "timer"
- ],
- "time": "2015-06-21 08:01:12"
- },
- {
- "name": "phpunit/php-token-stream",
- "version": "1.4.8",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-token-stream.git",
- "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
- "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
- "shasum": ""
- },
- "require": {
- "ext-tokenizer": "*",
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Wrapper around PHP's tokenizer extension.",
- "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
- "keywords": [
- "tokenizer"
- ],
- "time": "2015-09-15 10:49:45"
- },
- {
- "name": "phpunit/phpunit",
- "version": "4.8.18",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "fa33d4ad96481b91df343d83e8c8aabed6b1dfd3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fa33d4ad96481b91df343d83e8c8aabed6b1dfd3",
- "reference": "fa33d4ad96481b91df343d83e8c8aabed6b1dfd3",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-json": "*",
- "ext-pcre": "*",
- "ext-reflection": "*",
- "ext-spl": "*",
- "php": ">=5.3.3",
- "phpspec/prophecy": "^1.3.1",
- "phpunit/php-code-coverage": "~2.1",
- "phpunit/php-file-iterator": "~1.4",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-timer": ">=1.0.6",
- "phpunit/phpunit-mock-objects": "~2.3",
- "sebastian/comparator": "~1.1",
- "sebastian/diff": "~1.2",
- "sebastian/environment": "~1.3",
- "sebastian/exporter": "~1.2",
- "sebastian/global-state": "~1.0",
- "sebastian/version": "~1.0",
- "symfony/yaml": "~2.1|~3.0"
- },
- "suggest": {
- "phpunit/php-invoker": "~1.1"
- },
- "bin": [
- "phpunit"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.8.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "The PHP Unit Testing framework.",
- "homepage": "https://phpunit.de/",
- "keywords": [
- "phpunit",
- "testing",
- "xunit"
- ],
- "time": "2015-11-11 11:32:49"
- },
- {
- "name": "phpunit/phpunit-mock-objects",
- "version": "2.3.8",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
- "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
- "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.0.2",
- "php": ">=5.3.3",
- "phpunit/php-text-template": "~1.2",
- "sebastian/exporter": "~1.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "suggest": {
- "ext-soap": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Mock Object library for PHPUnit",
- "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
- "keywords": [
- "mock",
- "xunit"
- ],
- "time": "2015-10-02 06:51:40"
- },
- {
- "name": "psr/http-message",
- "version": "1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-message.git",
- "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
- "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Http\\Message\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for HTTP messages",
- "keywords": [
- "http",
- "http-message",
- "psr",
- "psr-7",
- "request",
- "response"
- ],
- "time": "2015-05-04 20:22:00"
- },
- {
- "name": "sebastian/comparator",
- "version": "1.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "937efb279bd37a375bcadf584dec0726f84dbf22"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22",
- "reference": "937efb279bd37a375bcadf584dec0726f84dbf22",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "sebastian/diff": "~1.2",
- "sebastian/exporter": "~1.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@2bepublished.at"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Provides the functionality to compare PHP values for equality",
- "homepage": "http://www.github.com/sebastianbergmann/comparator",
- "keywords": [
- "comparator",
- "compare",
- "equality"
- ],
- "time": "2015-07-26 15:48:44"
- },
- {
- "name": "sebastian/diff",
- "version": "1.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3",
- "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Kore Nordmann",
- "email": "mail@kore-nordmann.de"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Diff implementation",
- "homepage": "http://www.github.com/sebastianbergmann/diff",
- "keywords": [
- "diff"
- ],
- "time": "2015-02-22 15:13:53"
- },
- {
- "name": "sebastian/environment",
- "version": "1.3.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6324c907ce7a52478eeeaede764f48733ef5ae44",
- "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Provides functionality to handle HHVM/PHP environments",
- "homepage": "http://www.github.com/sebastianbergmann/environment",
- "keywords": [
- "Xdebug",
- "environment",
- "hhvm"
- ],
- "time": "2015-08-03 06:14:51"
- },
- {
- "name": "sebastian/exporter",
- "version": "1.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "7ae5513327cb536431847bcc0c10edba2701064e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e",
- "reference": "7ae5513327cb536431847bcc0c10edba2701064e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "sebastian/recursion-context": "~1.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@2bepublished.at"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- }
- ],
- "description": "Provides the functionality to export PHP variables for visualization",
- "homepage": "http://www.github.com/sebastianbergmann/exporter",
- "keywords": [
- "export",
- "exporter"
- ],
- "time": "2015-06-21 07:55:53"
- },
- {
- "name": "sebastian/global-state",
- "version": "1.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
- "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.2"
- },
- "suggest": {
- "ext-uopz": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Snapshotting of global state",
- "homepage": "http://www.github.com/sebastianbergmann/global-state",
- "keywords": [
- "global state"
- ],
- "time": "2015-10-12 03:26:01"
- },
- {
- "name": "sebastian/recursion-context",
- "version": "1.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "994d4a811bafe801fb06dccbee797863ba2792ba"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/994d4a811bafe801fb06dccbee797863ba2792ba",
- "reference": "994d4a811bafe801fb06dccbee797863ba2792ba",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- }
- ],
- "description": "Provides functionality to recursively process PHP variables",
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
- "time": "2015-06-21 08:04:50"
- },
- {
- "name": "sebastian/version",
- "version": "1.0.6",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/version.git",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "shasum": ""
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library that helps with managing the version number of Git-hosted PHP projects",
- "homepage": "https://github.com/sebastianbergmann/version",
- "time": "2015-06-21 13:59:46"
- },
- {
- "name": "symfony/browser-kit",
- "version": "v2.7.7",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/browser-kit.git",
- "reference": "bd28847ea2193916074c7b11d4fdd78570049694"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/bd28847ea2193916074c7b11d4fdd78570049694",
- "reference": "bd28847ea2193916074c7b11d4fdd78570049694",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9",
- "symfony/dom-crawler": "~2.0,>=2.0.5"
- },
- "require-dev": {
- "symfony/css-selector": "~2.0,>=2.0.5",
- "symfony/process": "~2.3.34|~2.7,>=2.7.6"
- },
- "suggest": {
- "symfony/process": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\BrowserKit\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony BrowserKit Component",
- "homepage": "https://symfony.com",
- "time": "2015-11-02 20:20:53"
- },
- {
- "name": "symfony/console",
- "version": "v2.7.7",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/console.git",
- "reference": "16bb1cb86df43c90931df65f529e7ebd79636750"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/16bb1cb86df43c90931df65f529e7ebd79636750",
- "reference": "16bb1cb86df43c90931df65f529e7ebd79636750",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/event-dispatcher": "~2.1",
- "symfony/process": "~2.1"
- },
- "suggest": {
- "psr/log": "For using the console logger",
- "symfony/event-dispatcher": "",
- "symfony/process": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Console\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Console Component",
- "homepage": "https://symfony.com",
- "time": "2015-11-18 09:54:26"
- },
- {
- "name": "symfony/css-selector",
- "version": "v2.7.7",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/css-selector.git",
- "reference": "abb47717fb88aebd9437da2fc8bb01a50a36679f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/abb47717fb88aebd9437da2fc8bb01a50a36679f",
- "reference": "abb47717fb88aebd9437da2fc8bb01a50a36679f",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\CssSelector\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jean-François Simon",
- "email": "jeanfrancois.simon@sensiolabs.com"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony CssSelector Component",
- "homepage": "https://symfony.com",
- "time": "2015-10-30 20:10:21"
- },
- {
- "name": "symfony/dom-crawler",
- "version": "v2.7.7",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/dom-crawler.git",
- "reference": "b33593cbfe1d81b50d48353f338aca76a08658d8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/b33593cbfe1d81b50d48353f338aca76a08658d8",
- "reference": "b33593cbfe1d81b50d48353f338aca76a08658d8",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "require-dev": {
- "symfony/css-selector": "~2.3"
- },
- "suggest": {
- "symfony/css-selector": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\DomCrawler\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony DomCrawler Component",
- "homepage": "https://symfony.com",
- "time": "2015-11-02 20:20:53"
- },
- {
- "name": "symfony/event-dispatcher",
- "version": "v2.7.7",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "7e2f9c31645680026c2372edf66f863fc7757af5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7e2f9c31645680026c2372edf66f863fc7757af5",
- "reference": "7e2f9c31645680026c2372edf66f863fc7757af5",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "~2.0,>=2.0.5",
- "symfony/dependency-injection": "~2.6",
- "symfony/expression-language": "~2.6",
- "symfony/stopwatch": "~2.3"
- },
- "suggest": {
- "symfony/dependency-injection": "",
- "symfony/http-kernel": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\EventDispatcher\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony EventDispatcher Component",
- "homepage": "https://symfony.com",
- "time": "2015-10-30 20:10:21"
- },
- {
- "name": "symfony/finder",
- "version": "v2.7.7",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/finder.git",
- "reference": "a06a0c0ff7db3736a50d530c908cca547bf13da9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/a06a0c0ff7db3736a50d530c908cca547bf13da9",
- "reference": "a06a0c0ff7db3736a50d530c908cca547bf13da9",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Finder\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Finder Component",
- "homepage": "https://symfony.com",
- "time": "2015-10-30 20:10:21"
- },
- {
- "name": "symfony/yaml",
- "version": "v2.7.7",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "4cfcd7a9fceba662b3c036b7d9a91f6197af046c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/4cfcd7a9fceba662b3c036b7d9a91f6197af046c",
- "reference": "4cfcd7a9fceba662b3c036b7d9a91f6197af046c",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Yaml\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Yaml Component",
- "homepage": "https://symfony.com",
- "time": "2015-11-18 13:41:01"
- }
- ],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": [],
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": {
- "php": ">= 5.3.7"
- },
- "platform-dev": []
-}
diff --git a/nette/native_db/notejam/tests/_bootstrap.php b/nette/native_db/notejam/tests/_bootstrap.php
deleted file mode 100644
index 243f9c85b..000000000
--- a/nette/native_db/notejam/tests/_bootstrap.php
+++ /dev/null
@@ -1,2 +0,0 @@
-amOnPage('/signin');
- $this->see('Sign in');
- $this->fillField("Email", $email);
- $this->fillField("Password", $password);
- $this->click('Sign In');
- }
-
-}
diff --git a/nette/native_db/notejam/tests/_support/FunctionalTester.php b/nette/native_db/notejam/tests/_support/FunctionalTester.php
deleted file mode 100644
index 7e888f8b2..000000000
--- a/nette/native_db/notejam/tests/_support/FunctionalTester.php
+++ /dev/null
@@ -1,26 +0,0 @@
-wantTo('see note can be successfully created');
-$I->testLogin();
-$I->amOnPage('/notes/create');
-$I->fillField('Name', 'Example note');
-$I->fillField('Text', 'Lorem ipsum');
-$I->selectOption('Pad', 1);
-$I->click('Save');
-$I->see('Example note');
diff --git a/nette/native_db/notejam/tests/acceptance/CreateNoteFailCept.php b/nette/native_db/notejam/tests/acceptance/CreateNoteFailCept.php
deleted file mode 100644
index 4f768ee29..000000000
--- a/nette/native_db/notejam/tests/acceptance/CreateNoteFailCept.php
+++ /dev/null
@@ -1,9 +0,0 @@
-wantTo('see note can not be created without required fields');
-$I->testLogin();
-$I->amOnPage('/notes/create');
-$I->click('Save');
-$I->seeInCurrentUrl('/notes/create');
-$I->see('Name is required');
-$I->see('Text is required');
diff --git a/nette/native_db/notejam/tests/acceptance/CreatePadCept.php b/nette/native_db/notejam/tests/acceptance/CreatePadCept.php
deleted file mode 100644
index 4926950ba..000000000
--- a/nette/native_db/notejam/tests/acceptance/CreatePadCept.php
+++ /dev/null
@@ -1,8 +0,0 @@
-wantTo('see pad can be successfully created');
-$I->testLogin();
-$I->amOnPage('/pads/create');
-$I->fillField('Name', 'Example pad');
-$I->click('Save');
-$I->see('Example pad');
diff --git a/nette/native_db/notejam/tests/acceptance/CreatePadFailCept.php b/nette/native_db/notejam/tests/acceptance/CreatePadFailCept.php
deleted file mode 100644
index b8f61bbfa..000000000
--- a/nette/native_db/notejam/tests/acceptance/CreatePadFailCept.php
+++ /dev/null
@@ -1,9 +0,0 @@
-wantTo('see pad can not be created without required fields');
-$I->testLogin();
-$I->amOnPage('/pads/create');
-$I->click('Save');
-$I->dontSee('Example pad');
-$I->seeInCurrentUrl('/pads/create');
-$I->see('Name is required');
diff --git a/nette/native_db/notejam/tests/acceptance/DeleteNoteCept.php b/nette/native_db/notejam/tests/acceptance/DeleteNoteCept.php
deleted file mode 100644
index fb718c70c..000000000
--- a/nette/native_db/notejam/tests/acceptance/DeleteNoteCept.php
+++ /dev/null
@@ -1,7 +0,0 @@
-wantTo('see note can be successfully deleted');
-$I->testLogin();
-$I->amOnPage('/notes/1/delete');
-$I->click('Yes, I want to delete this note');
-$I->dontSee('Note 1');
diff --git a/nette/native_db/notejam/tests/acceptance/DeleteOtherOwnersNoteCept.php b/nette/native_db/notejam/tests/acceptance/DeleteOtherOwnersNoteCept.php
deleted file mode 100644
index f9f262da0..000000000
--- a/nette/native_db/notejam/tests/acceptance/DeleteOtherOwnersNoteCept.php
+++ /dev/null
@@ -1,6 +0,0 @@
-wantTo('see note can not be deleted by not an owner');
-$I->testLogin();
-$I->amOnPage('/notes/5/delete');
-$I->dontSee('Yes, I want to delete this note');
diff --git a/nette/native_db/notejam/tests/acceptance/DeleteOtherOwnersPadCept.php b/nette/native_db/notejam/tests/acceptance/DeleteOtherOwnersPadCept.php
deleted file mode 100644
index 531887afe..000000000
--- a/nette/native_db/notejam/tests/acceptance/DeleteOtherOwnersPadCept.php
+++ /dev/null
@@ -1,6 +0,0 @@
-wantTo('see pad can not be deleted by not an owner');
-$I->testLogin();
-$I->amOnPage('/pads/4/delete');
-$I->dontSee('Yes, I want to delete this pad');
diff --git a/nette/native_db/notejam/tests/acceptance/DeletePadCept.php b/nette/native_db/notejam/tests/acceptance/DeletePadCept.php
deleted file mode 100644
index f86354c75..000000000
--- a/nette/native_db/notejam/tests/acceptance/DeletePadCept.php
+++ /dev/null
@@ -1,7 +0,0 @@
-wantTo('see pad can be successfully deleted');
-$I->testLogin();
-$I->amOnPage('/pads/1/delete');
-$I->click('Yes, I want to delete this pad');
-$I->dontSee('Pad 1');
diff --git a/nette/native_db/notejam/tests/acceptance/EditNoteCept.php b/nette/native_db/notejam/tests/acceptance/EditNoteCept.php
deleted file mode 100644
index 9012a2e35..000000000
--- a/nette/native_db/notejam/tests/acceptance/EditNoteCept.php
+++ /dev/null
@@ -1,12 +0,0 @@
-wantTo('see note can be successfully edited');
-$I->testLogin();
-$I->amOnPage('/notes/1/edit');
-$I->fillField('Name', 'Note 1 - edited');
-$I->fillField('Text', 'Lorem ipsum - edited');
-$I->selectOption('Pad', 1);
-$I->click('Save');
-$I->see('Note 1 - edited');
-$I->amOnPage('/pads/1');
-$I->see('Note 1 - edited');
diff --git a/nette/native_db/notejam/tests/acceptance/EditNoteFailCept.php b/nette/native_db/notejam/tests/acceptance/EditNoteFailCept.php
deleted file mode 100644
index f921f1475..000000000
--- a/nette/native_db/notejam/tests/acceptance/EditNoteFailCept.php
+++ /dev/null
@@ -1,11 +0,0 @@
-wantTo('see note can not be edited without required fields');
-$I->testLogin();
-$I->amOnPage('/notes/1/edit');
-$I->fillField('Name', '');
-$I->fillField('Text', '');
-$I->click('Save');
-$I->seeInCurrentUrl('/notes/1/edit');
-$I->see('Name is required');
-$I->see('Text is required');
diff --git a/nette/native_db/notejam/tests/acceptance/EditOtherOwnersNoteCept.php b/nette/native_db/notejam/tests/acceptance/EditOtherOwnersNoteCept.php
deleted file mode 100644
index 23d00f608..000000000
--- a/nette/native_db/notejam/tests/acceptance/EditOtherOwnersNoteCept.php
+++ /dev/null
@@ -1,6 +0,0 @@
-wantTo('see note can not be edited by not an owner');
-$I->testLogin();
-$I->amOnPage('/notes/5/edit');
-$I->dontSee('Save', 'input');
diff --git a/nette/native_db/notejam/tests/acceptance/EditOtherOwnersPadCept.php b/nette/native_db/notejam/tests/acceptance/EditOtherOwnersPadCept.php
deleted file mode 100644
index 227f97916..000000000
--- a/nette/native_db/notejam/tests/acceptance/EditOtherOwnersPadCept.php
+++ /dev/null
@@ -1,6 +0,0 @@
-wantTo('see pad can not be edited by not an owner');
-$I->testLogin();
-$I->amOnPage('/pads/4/edit');
-$I->dontSee('Save', 'input');
diff --git a/nette/native_db/notejam/tests/acceptance/EditPadCept.php b/nette/native_db/notejam/tests/acceptance/EditPadCept.php
deleted file mode 100644
index 923c9cc95..000000000
--- a/nette/native_db/notejam/tests/acceptance/EditPadCept.php
+++ /dev/null
@@ -1,8 +0,0 @@
-wantTo('see pad can be successfully edited');
-$I->testLogin();
-$I->amOnPage('/pads/1/edit');
-$I->fillField('Name', 'Pad 1 - edited');
-$I->click('Save');
-$I->see('Pad 1 - edited');
diff --git a/nette/native_db/notejam/tests/acceptance/EditPadFailCept.php b/nette/native_db/notejam/tests/acceptance/EditPadFailCept.php
deleted file mode 100644
index a6614b736..000000000
--- a/nette/native_db/notejam/tests/acceptance/EditPadFailCept.php
+++ /dev/null
@@ -1,9 +0,0 @@
-wantTo('see pad cannot be edited without required fields');
-$I->testLogin();
-$I->amOnPage('/pads/1/edit');
-$I->fillField('Name', '');
-$I->click('Save');
-$I->seeInCurrentUrl('/pads/1/edit');
-$I->see('Name is required');
diff --git a/nette/native_db/notejam/tests/acceptance/ForgottenPasswordCept.php b/nette/native_db/notejam/tests/acceptance/ForgottenPasswordCept.php
deleted file mode 100644
index aaeccdc3c..000000000
--- a/nette/native_db/notejam/tests/acceptance/ForgottenPasswordCept.php
+++ /dev/null
@@ -1,7 +0,0 @@
-wantTo('see user can successfully get new password');
-$I->amOnPage('/forgot-password');
-$I->fillField('Email', 'john.doe@example.com');
-$I->click('Get new password');
-$I->see('Sign in');
diff --git a/nette/native_db/notejam/tests/acceptance/ForgottenPasswordInvalidEmailCept.php b/nette/native_db/notejam/tests/acceptance/ForgottenPasswordInvalidEmailCept.php
deleted file mode 100644
index 2be0e84ab..000000000
--- a/nette/native_db/notejam/tests/acceptance/ForgottenPasswordInvalidEmailCept.php
+++ /dev/null
@@ -1,7 +0,0 @@
-wantTo('see user can not successfully get new password with invalid email');
-$I->amOnPage('/forgot-password');
-$I->fillField('Email', 'invalid');
-$I->click('Get new password');
-$I->see('Invalid email');
diff --git a/nette/native_db/notejam/tests/acceptance/ForgottenPasswordUnregisteredEmailCept.php b/nette/native_db/notejam/tests/acceptance/ForgottenPasswordUnregisteredEmailCept.php
deleted file mode 100644
index 83702e1d2..000000000
--- a/nette/native_db/notejam/tests/acceptance/ForgottenPasswordUnregisteredEmailCept.php
+++ /dev/null
@@ -1,7 +0,0 @@
-wantTo('see user can not successfully get new password with unregistered email');
-$I->amOnPage('/forgot-password');
-$I->fillField('Email', 'invalid@example.com');
-$I->click('Get new password');
-$I->see('No user with given email found');
diff --git a/nette/native_db/notejam/tests/acceptance/HomepageCept.php b/nette/native_db/notejam/tests/acceptance/HomepageCept.php
deleted file mode 100644
index c7c7afd42..000000000
--- a/nette/native_db/notejam/tests/acceptance/HomepageCept.php
+++ /dev/null
@@ -1,8 +0,0 @@
-wantTo('see notes can be viewed successfully');
-$I->amOnPage('/');
-$I->seeInCurrentUrl('/signin');
-$I->testLogin();
-$I->seeCurrentUrlEquals('/');
-$I->see('My pads');
diff --git a/nette/native_db/notejam/tests/acceptance/NoteDetailCept.php b/nette/native_db/notejam/tests/acceptance/NoteDetailCept.php
deleted file mode 100644
index 55c890c63..000000000
--- a/nette/native_db/notejam/tests/acceptance/NoteDetailCept.php
+++ /dev/null
@@ -1,7 +0,0 @@
-wantTo('see note can be viewed successfully');
-$I->testLogin();
-$I->amOnPage('/notes/1');
-$I->see('Note 1');
-$I->see('Lorem ipsum');
diff --git a/nette/native_db/notejam/tests/acceptance/OtherOwnersNoteDetailCept.php b/nette/native_db/notejam/tests/acceptance/OtherOwnersNoteDetailCept.php
deleted file mode 100644
index 2e65f0224..000000000
--- a/nette/native_db/notejam/tests/acceptance/OtherOwnersNoteDetailCept.php
+++ /dev/null
@@ -1,7 +0,0 @@
-wantTo('see note can not be viewed by not an owner');
-$I->testLogin();
-$I->amOnPage('/notes/5');
-$I->dontSee('Other Note');
-$I->dontSee('Lorem ipsum');
diff --git a/nette/native_db/notejam/tests/acceptance/OtherOwnersPadDetailCept.php b/nette/native_db/notejam/tests/acceptance/OtherOwnersPadDetailCept.php
deleted file mode 100644
index e169ae94f..000000000
--- a/nette/native_db/notejam/tests/acceptance/OtherOwnersPadDetailCept.php
+++ /dev/null
@@ -1,6 +0,0 @@
-wantTo('see pad can not be viewed by not an owner');
-$I->testLogin();
-$I->amOnPage('/pads/4');
-$I->dontSee('Other Pad');
diff --git a/nette/native_db/notejam/tests/acceptance/PadDetailCept.php b/nette/native_db/notejam/tests/acceptance/PadDetailCept.php
deleted file mode 100644
index cc00bcf9a..000000000
--- a/nette/native_db/notejam/tests/acceptance/PadDetailCept.php
+++ /dev/null
@@ -1,7 +0,0 @@
-wantTo('see pad can be viewed');
-$I->testLogin();
-$I->amOnPage('/pads/1');
-$I->see('Pad 1');
-$I->see('Note 2'); // Note 2 belongs to Pad 1
diff --git a/nette/native_db/notejam/tests/acceptance/SetNewPasswordCept.php b/nette/native_db/notejam/tests/acceptance/SetNewPasswordCept.php
deleted file mode 100644
index 5b4a95f91..000000000
--- a/nette/native_db/notejam/tests/acceptance/SetNewPasswordCept.php
+++ /dev/null
@@ -1,10 +0,0 @@
-wantTo('see user can successfully set new password');
-$I->testLogin();
-$I->amOnPage('/settings');
-$I->fillField('Current password', 'pass');
-$I->fillField('New Password', 'qwerty');
-$I->fillField('Confirm New Password', 'qwerty');
-$I->click('Change Password');
-$I->see('Account settings');
diff --git a/nette/native_db/notejam/tests/acceptance/SetNewPasswordFailCept.php b/nette/native_db/notejam/tests/acceptance/SetNewPasswordFailCept.php
deleted file mode 100644
index 76160c170..000000000
--- a/nette/native_db/notejam/tests/acceptance/SetNewPasswordFailCept.php
+++ /dev/null
@@ -1,11 +0,0 @@
-wantTo('see user can not set new password without required fields');
-$I->testLogin();
-$I->amOnPage('/settings');
-$I->fillField('Current password', '');
-$I->fillField('New Password', '');
-$I->fillField('Confirm New Password', '');
-$I->click('Change Password');
-$I->see('Current password is required');
-$I->see('New password is required');
diff --git a/nette/native_db/notejam/tests/acceptance/SetNewPasswordInvalidCurrentPasswordCept.php b/nette/native_db/notejam/tests/acceptance/SetNewPasswordInvalidCurrentPasswordCept.php
deleted file mode 100644
index 44decd705..000000000
--- a/nette/native_db/notejam/tests/acceptance/SetNewPasswordInvalidCurrentPasswordCept.php
+++ /dev/null
@@ -1,10 +0,0 @@
-wantTo('see user can not set new password with invalid current password');
-$I->testLogin();
-$I->amOnPage('/settings');
-$I->fillField('Current password', 'pls');
-$I->fillField('New Password', 'pass');
-$I->fillField('Confirm New Password', 'pass');
-$I->click('Change Password');
-$I->see('Invalid current password');
diff --git a/nette/native_db/notejam/tests/acceptance/SetNewPasswordMismatchCept.php b/nette/native_db/notejam/tests/acceptance/SetNewPasswordMismatchCept.php
deleted file mode 100644
index a229a0ecd..000000000
--- a/nette/native_db/notejam/tests/acceptance/SetNewPasswordMismatchCept.php
+++ /dev/null
@@ -1,10 +0,0 @@
-wantTo('see user can not set new password without confirming new password');
-$I->testLogin();
-$I->amOnPage('/settings');
-$I->fillField('Current password', 'pass');
-$I->fillField('New Password', 'pls');
-$I->fillField('Confirm New Password', 'pass');
-$I->click('Change Password');
-$I->see('New passwords must match');
diff --git a/nette/native_db/notejam/tests/acceptance/SignInCept.php b/nette/native_db/notejam/tests/acceptance/SignInCept.php
deleted file mode 100644
index bae44a2a5..000000000
--- a/nette/native_db/notejam/tests/acceptance/SignInCept.php
+++ /dev/null
@@ -1,5 +0,0 @@
-wantTo('see user can successfully sign in');
-$I->testLogin();
-$I->see("My pads");
diff --git a/nette/native_db/notejam/tests/acceptance/SignInFailCept.php b/nette/native_db/notejam/tests/acceptance/SignInFailCept.php
deleted file mode 100644
index 99645b64f..000000000
--- a/nette/native_db/notejam/tests/acceptance/SignInFailCept.php
+++ /dev/null
@@ -1,10 +0,0 @@
-wantTo('see user can not sign in without required fields');
-$I->amOnPage('/signin');
-$I->see('Sign in');
-$I->fillField("Email", '');
-$I->fillField("Password", '');
-$I->click('Sign In');
-$I->see('Email is required');
-$I->see('Password is required');
diff --git a/nette/native_db/notejam/tests/acceptance/SignInInvalidEmailCept.php b/nette/native_db/notejam/tests/acceptance/SignInInvalidEmailCept.php
deleted file mode 100644
index 606afc3c2..000000000
--- a/nette/native_db/notejam/tests/acceptance/SignInInvalidEmailCept.php
+++ /dev/null
@@ -1,5 +0,0 @@
-wantTo('see user can not sign in with invalid email');
-$I->testLogin('invalid@example.com', 'pass');
-$I->see("Unknown user");
diff --git a/nette/native_db/notejam/tests/acceptance/SignInInvalidPasswordCept.php b/nette/native_db/notejam/tests/acceptance/SignInInvalidPasswordCept.php
deleted file mode 100644
index 2e8b58871..000000000
--- a/nette/native_db/notejam/tests/acceptance/SignInInvalidPasswordCept.php
+++ /dev/null
@@ -1,5 +0,0 @@
-wantTo('see user can not sign in with invalid password');
-$I->testLogin('john.doe@example.com', 'pls');
-$I->see('Invalid password');
diff --git a/nette/native_db/notejam/tests/acceptance/SignUpAlreadyExistsCept.php b/nette/native_db/notejam/tests/acceptance/SignUpAlreadyExistsCept.php
deleted file mode 100644
index f8e100b0f..000000000
--- a/nette/native_db/notejam/tests/acceptance/SignUpAlreadyExistsCept.php
+++ /dev/null
@@ -1,10 +0,0 @@
-wantTo('see user can not sign up with already registered email');
-$I->amOnPage('/signup');
-$I->fillField('Email', 'john.doe@example.com');
-$I->fillField('Password', 'pass');
-$I->fillField('confirm', 'pass');
-$I->click('Sign Up');
-$I->seeInCurrentUrl('/signup');
-$I->see('User with given email already registered');
diff --git a/nette/native_db/notejam/tests/acceptance/SignUpCept.php b/nette/native_db/notejam/tests/acceptance/SignUpCept.php
deleted file mode 100644
index 4c6f190ac..000000000
--- a/nette/native_db/notejam/tests/acceptance/SignUpCept.php
+++ /dev/null
@@ -1,13 +0,0 @@
-wantTo('see user can successfully sign up');
-$I->amOnPage('/signup');
-$I->fillField('Email', 'test@example.com');
-$I->fillField('Password', 'qwerty');
-$I->fillField('confirm', 'qwerty');
-$I->click('Sign Up');
-$I->seeInCurrentUrl('/signin');
-$I->see('User is successfully created. Now you can sign in.');
-$I->testLogin('test@example.com', 'qwerty');
-$I->seeCurrentUrlEquals('/');
-$I->see('My pads');
diff --git a/nette/native_db/notejam/tests/acceptance/SignUpFailCept.php b/nette/native_db/notejam/tests/acceptance/SignUpFailCept.php
deleted file mode 100644
index 2581fb91e..000000000
--- a/nette/native_db/notejam/tests/acceptance/SignUpFailCept.php
+++ /dev/null
@@ -1,11 +0,0 @@
-wantTo('see user can not sign up without required fields');
-$I->amOnPage('/signup');
-$I->fillField('Email', '');
-$I->fillField('Password', '');
-$I->fillField('confirm', '');
-$I->click('Sign Up');
-$I->seeInCurrentUrl('/signup');
-$I->see('Email is required');
-$I->see('Password is required');
diff --git a/nette/native_db/notejam/tests/acceptance/SignUpInvalidEmailCept.php b/nette/native_db/notejam/tests/acceptance/SignUpInvalidEmailCept.php
deleted file mode 100644
index 97b4bfef8..000000000
--- a/nette/native_db/notejam/tests/acceptance/SignUpInvalidEmailCept.php
+++ /dev/null
@@ -1,10 +0,0 @@
-wantTo('see user can not sign up with invalid email');
-$I->amOnPage('/signup');
-$I->fillField('Email', 'abcd');
-$I->fillField('Password', 'pass');
-$I->fillField('confirm', 'pass');
-$I->click('Sign Up');
-$I->seeInCurrentUrl('/signup');
-$I->see('Invalid email');
diff --git a/nette/native_db/notejam/tests/acceptance/SignUpPasswordMismatchCept.php b/nette/native_db/notejam/tests/acceptance/SignUpPasswordMismatchCept.php
deleted file mode 100644
index 1e6a470fb..000000000
--- a/nette/native_db/notejam/tests/acceptance/SignUpPasswordMismatchCept.php
+++ /dev/null
@@ -1,10 +0,0 @@
-wantTo('see user can not sign up without confirming password');
-$I->amOnPage('/signup');
-$I->fillField('Email', 'test@example.com');
-$I->fillField('Password', 'pass');
-$I->fillField('confirm', 'pls');
-$I->click('Sign Up');
-$I->seeInCurrentUrl('/signup');
-$I->see('Passwords must match');
diff --git a/nette/native_db/notejam/tests/acceptance/_bootstrap.php b/nette/native_db/notejam/tests/acceptance/_bootstrap.php
deleted file mode 100644
index 8a8855580..000000000
--- a/nette/native_db/notejam/tests/acceptance/_bootstrap.php
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
-
-
-
-
-
-
-Site is temporarily down for maintenance
-
-We're Sorry
-
-The site is temporarily down for maintenance. Please try again in a few minutes.
-
-div {
- display: none; }
-
-
-/* Grid */
-#grid .column,
-#grid .columns {
- background: #ddd;
- height: 25px;
- line-height: 25px;
- margin-bottom: 10px;
- text-align: center;
- text-transform: uppercase;
- color: #555;
- font-size: 12px;
- font-weight: bold;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px; }
-#grid .column:hover,
-#grid .columns:hover {
- background: #bbb;
- color: #333; }
-#grid .example-grid { overflow: hidden; }
-
-.post-button-note,
-.post-button-note a {
- font-size: 11px;
- color: #999; }
-
-#examples .four.columns a {
- text-decoration: none;
-}
-#examples .four.columns a:hover {
- text-decoration: underline;
-}
-
-
-.resize {
- position: fixed;
- bottom: 0;
- right: 0;
- height: 80px;
- width: 80px;
- background: url(images/resize.png); }
-
-
-img {
- max-width: 100%;
- height: auto; }
-
-.gist-meta { display: none !important;}
-
-ul ul ul li { margin-bottom: 3px; }
-
-.twitter-share-button { margin-bottom: -18px; }
-
-/* Table stylesheets */
-table {
- width: 100%;
- border-collapse: collapse;
-}
-
-table th, table td {
- padding: 10px 10px 9px;
- font-size: 13px;
- line-height: 18px;
- text-align: left;
-}
-
-table td {
- vertical-align: top;
- border-top: solid 1px #ddd;
-}
-
-table th {
- padding-top: 9px;
- font-weight: bold;
- vertical-align: middle;
-}
-
-table.condensed th, table.condensed td {
- padding: 5px 5px 4px;
-}
-
-table.bordered {
- border-collapse: separate;
- border: solid 1px #ddd;
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
-}
-
-table.bordered th + th,
-table.bordered th + td,
-table.bordered td + td {
- border-left: solid 1px #ddd;
-}
-
-.zebra-striped tbody tr:nth-child(odd) td,
-.zebra-striped tbody tr:nth-child(odd) th {
- background: #f5f5f5;
-}
-
-.carbonad,
-.carbonad-image,
-.carbonad-text,
-.carbonad-tag {
- background: none !important;
- border: none !important;
- margin-left: 0 !important;
-}
-.carbonad-tag {
- margin-top: 6px !important;
- padding-top: 0 !important;
-}
-.carbonad-text {
- height: auto !important;
-}
-.carbonad-image {
- margin-top: 0 !important;
-}
-
-.hidden-text {
- font-size: 12px;
- color: #999;
-}
-
-td.date, th.date {
- text-align: right;
-}
-
-td.date {
- font-style: italic;
-}
-
-form.note input[type="text"], form.note textarea {
- width: 100%;
-}
-
-form hr {
- width: 218px;
- margin: 10px 0px;
-}
-
-form.note textarea {
- height: 250px;
-}
-
-div.content-area {
- min-height: 600px;
-}
-
-hr.footer {
- margin-bottom: 10px;
-}
-
-div.footer {
- margin-bottom: 10px;
- text-align: center;
- font-size: 12px;
-}
-
-form.sign-in {
- margin: 50px 0 0 0;
-}
-
-.sort_arrow {
- text-decoration: none;
-}
-
-.sort_arrow:hover {
- text-decoration: none;
- color: red;
-}
-
-div.sign-in-out-block {
- position: absolute;
- right: 14px;
- top: 8px;
- font-size: 12px;
-}
-
-div.sign-in-out-block a {
- /*text-decoration: none;*/
-}
-
-a.small-red {
- color: red;
- font-size: 12px;
-}
-
-table.notes {
- margin: 0 0 20px 0;
-}
-
-table.notes th.note {
- width: 72%;
-}
-
-table.notes td.pad {
- color: grey;
-}
-
-table.notes td.pad a {
- color: grey;
- text-decoration: underline;
- font-style: normal;
-}
-
-
-table.notes td.pad a:hover {
- color: black;
-}
-
-p.empty {
- color: grey;
- font-style: italic;
-}
-
-a.delete-note {
- float: right;
- font-size: 12px;
- color: red;
-}
-
-.red, input.red {
- color: red !important;
-}
-
-ul.errorlist, ul.errors {
- margin: -18px 0 0 0;
-}
-
-ul.errorlist li, ul.errors li {
- color: red;
-}
-
-.alert-area {
- text-align: center;
-}
-
-.alert {
- padding: 5px 8px;
- margin: 0 0 12px 0;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
-}
-
-.alert-success {
- color: #468847;
- background-color: #dff0d8;
- border: 1px solid #d6e9c6;
-}
-
-.alert-error {
- color: #b94a48;
- background-color: #f2dede;
- border: 1px solid #eed3d7;
-}
-
-/* Mobile */
-@media only screen and (max-width: 767px) {
- header h1 { font-size: 34px; line-height: 37px; }
- nav { position: relative; }
- nav ul,
- .carbonad {
- display: none;
- }
- #logo { text-align: left; }
- #examples .four.columns {
- padding-top: 30px;
- }
-}
-
-/* Mobile Landscape */
-@media only screen and (min-width: 480px) and (max-width: 767px) {
- nav ul {
- display: none;
- }
-}
-
-/* Non 960 */
-@media only screen and (max-width: 959px) {
- #logo {
- font-size: 21px;
- margin-bottom: 15px; }
- nav .button {
- padding: 9px 20px 11px; }
-}
-
-/* iPad Portrait/Browser */
-@media only screen and (min-width: 768px) and (max-width: 959px) {
- nav {
- width: 124px; }
-}
-
-/* Mobile/Browser */
-@media only screen and (max-width: 767px) {}
-
-/* Mobile Landscape/Browser */
-@media only screen and (min-width: 480px) and (max-width: 767px) {}
-
-/* Anything smaller than standard 960 */
-@media only screen and (max-width: 959px) {}
-
-
-/* iPad Portrait Only */
-@media only screen and (min-width: 768px) and (max-width: 959px) and (max-device-width: 1000px) {}
-
-/* Mobile Only */
-@media only screen and (max-width: 767px) and (max-device-width: 1000px) {}
-
-/* Mobile Landscape Only */
-@media only screen and (min-width: 480px) and (max-width: 767px) and (max-device-width: 1000px) {}
-
-/* Anything smaller than standard 960 on a device */
-@media only screen and (max-width: 959px) and (max-device-width: 1000px) {
- .resize { display: none; }
-}
diff --git a/nette/native_db/notejam/www/favicon.ico b/nette/native_db/notejam/www/favicon.ico
deleted file mode 100644
index b20cfd0f0..000000000
Binary files a/nette/native_db/notejam/www/favicon.ico and /dev/null differ
diff --git a/nette/native_db/notejam/www/images/spinner.gif b/nette/native_db/notejam/www/images/spinner.gif
deleted file mode 100644
index 185a077d3..000000000
Binary files a/nette/native_db/notejam/www/images/spinner.gif and /dev/null differ
diff --git a/nette/native_db/notejam/www/index.php b/nette/native_db/notejam/www/index.php
deleted file mode 100644
index 13b8a6a6d..000000000
--- a/nette/native_db/notejam/www/index.php
+++ /dev/null
@@ -1,13 +0,0 @@
-getByType('Nette\Application\Application')->run();
diff --git a/nette/native_db/notejam/www/js/main.js b/nette/native_db/notejam/www/js/main.js
deleted file mode 100644
index f5aaa4205..000000000
--- a/nette/native_db/notejam/www/js/main.js
+++ /dev/null
@@ -1,2 +0,0 @@
-$(function () {
-});
diff --git a/nette/native_db/notejam/www/robots.txt b/nette/native_db/notejam/www/robots.txt
deleted file mode 100644
index e69de29bb..000000000
diff --git a/nette/native_db/readme.rst b/nette/native_db/readme.rst
deleted file mode 100644
index b68fe3fe8..000000000
--- a/nette/native_db/readme.rst
+++ /dev/null
@@ -1,99 +0,0 @@
-**************
-Notejam: Nette
-**************
-
-Notejam application implemented using `Nette framework `_.
-
-Nette version: 2.3
-
-The application is maintained by `@klimesf `_.
-
-==========================
-Installation and launching
-==========================
-
------
-Clone
------
-
-Clone the repo:
-
-.. code-block:: bash
-
- $ git clone git@github.com:komarserjio/notejam.git YOUR_PROJECT_DIR/
-
--------
-Install
--------
-
-Install `composer `_
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/nette/native_db/notejam
- $ curl -s https://getcomposer.org/installer | php
-
-Install dependencies
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/nette/native_db/notejam
- $ php composer.phar install
-
-Create your copy of ``config.local.neon``
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/nette/native_db/notejam
- $ cp app/config/config.example.neon app/config/config.local.neon
-
-Create database schema
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/nette/native_db/notejam
- $ php ./bin/create-db.php
-
-
-------
-Launch
-------
-
-Start built-in php web server:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/nette/native_db/notejam/www/
- $ php -t `pwd` -S 127.0.0.1:8000 `pwd`/index.php
-
-Go to http://localhost:8000/ in your browser.
-
----------
-Run tests
----------
-
-Run tests:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/nette/native_db/notejam/www/
- $ php -t `pwd` -S 127.0.0.1:8000 `pwd`/index.php
- $ cd ../
- $ ./vendor/bin/codecept run
-
-
-============
-Contribution
-============
-
-
-Do you have php/nette experience? Help the app to follow php and Nette Framework best practices.
-
-Please send your pull requests in the ``master`` branch.
-Always prepend your commits with framework name:
-
-.. code-block:: bash
-
- Nette: Implemented sign in functionality
-
-Read `contribution guide `_ for details.
diff --git a/padrino/README.rst b/padrino/README.rst
deleted file mode 100644
index 37221a864..000000000
--- a/padrino/README.rst
+++ /dev/null
@@ -1,73 +0,0 @@
-****************
-Notejam: Padrino
-****************
-
-Notejam application implemented using `Padrino `_ framework.
-
-==========================
-Installation and launching
-==========================
-
------
-Clone
------
-
-Clone the repo:
-
-.. code-block:: bash
-
- $ git clone git@github.com:komarserjio/notejam.git YOUR_PROJECT_DIR/
-
--------
-Install
--------
-
-Use `RVM `_ or `rbenv `_
-for environment management.
-
-Install dependencies:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/padrino/notejam/
- $ bundle install
-
-------
-Launch
-------
-
-Start built-in web server:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/padrino/notejam/
- $ padrino start
-
-Go to http://127.0.0.1:3000/ in your browser.
-
-
----------
-Run tests
----------
-
-Start functional and unit tests:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/padrino/notejam/
- $ padrino rake spec
-
-
-============
-Contribution
-============
-Do you have ruby/padrino experience? Help the app to follow ruby and padrino best practices.
-
-Please send your pull requests in the ``master`` branch.
-Always prepend your commits with framework name:
-
-.. code-block:: bash
-
- Padrino: Implemented sign in functionality
-
-Read `contribution guide `_ for details.
diff --git a/padrino/notejam/.components b/padrino/notejam/.components
deleted file mode 100644
index 9e717cd7c..000000000
--- a/padrino/notejam/.components
+++ /dev/null
@@ -1,10 +0,0 @@
----
-:orm: datamapper
-:test: rspec
-:mock: none
-:script: none
-:renderer: erb
-:stylesheet: none
-:namespace: Notejam
-:migration_format: number
-:admin_renderer: erb
diff --git a/padrino/notejam/.gitignore b/padrino/notejam/.gitignore
deleted file mode 100644
index 9fa1cf0a7..000000000
--- a/padrino/notejam/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-.DS_Store
-log/**/*
-tmp/**/*
-bin/*
-vendor/gems/*
-!vendor/gems/cache/
-.sass-cache/*
-db/*.db
-.*.sw*
diff --git a/padrino/notejam/Gemfile b/padrino/notejam/Gemfile
deleted file mode 100644
index 0745cf8d3..000000000
--- a/padrino/notejam/Gemfile
+++ /dev/null
@@ -1,43 +0,0 @@
-source 'https://rubygems.org'
-
-# Distribute your app as a gem
-# gemspec
-
-# Server requirements
-# gem 'thin' # or mongrel
-# gem 'trinidad', :platform => 'jruby'
-
-# Optional JSON codec (faster performance)
-# gem 'oj'
-
-# Project requirements
-gem 'rake'
-
-# Component requirements
-gem 'bcrypt'
-gem 'erubis', '~> 2.7.0'
-gem 'dm-sqlite-adapter'
-gem 'dm-validations'
-gem 'dm-timestamps'
-gem 'dm-migrations'
-gem 'dm-constraints'
-gem 'dm-aggregates'
-gem 'dm-types'
-gem 'dm-core'
-
-# Test requirements
-gem 'rspec', :group => 'test'
-gem 'rack-test', :require => 'rack/test', :group => 'test'
-
-gem 'database_cleaner'
-
-# Padrino Stable Gem
-gem 'padrino', '0.12.2'
-
-# Or Padrino Edge
-# gem 'padrino', :github => 'padrino/padrino-framework'
-
-# Or Individual Gems
-# %w(core support gen helpers cache mailer admin).each do |g|
-# gem 'padrino-' + g, '0.12.2'
-# end
diff --git a/padrino/notejam/Gemfile.lock b/padrino/notejam/Gemfile.lock
deleted file mode 100644
index ced4f9db8..000000000
--- a/padrino/notejam/Gemfile.lock
+++ /dev/null
@@ -1,144 +0,0 @@
-GEM
- remote: https://rubygems.org/
- specs:
- activesupport (4.1.1)
- i18n (~> 0.6, >= 0.6.9)
- json (~> 1.7, >= 1.7.7)
- minitest (~> 5.1)
- thread_safe (~> 0.1)
- tzinfo (~> 1.1)
- addressable (2.3.6)
- bcrypt (3.1.7)
- bcrypt-ruby (3.1.5)
- bcrypt (>= 3.1.3)
- data_objects (0.10.14)
- addressable (~> 2.1)
- database_cleaner (0.9.1)
- diff-lcs (1.2.5)
- dm-aggregates (1.2.0)
- dm-core (~> 1.2.0)
- dm-constraints (1.2.0)
- dm-core (~> 1.2.0)
- dm-core (1.2.1)
- addressable (~> 2.3)
- dm-do-adapter (1.2.0)
- data_objects (~> 0.10.6)
- dm-core (~> 1.2.0)
- dm-migrations (1.2.0)
- dm-core (~> 1.2.0)
- dm-sqlite-adapter (1.2.0)
- dm-do-adapter (~> 1.2.0)
- do_sqlite3 (~> 0.10.6)
- dm-timestamps (1.2.0)
- dm-core (~> 1.2.0)
- dm-types (1.2.2)
- bcrypt-ruby (~> 3.0)
- dm-core (~> 1.2.0)
- fastercsv (~> 1.5)
- json (~> 1.6)
- multi_json (~> 1.0)
- stringex (~> 1.4)
- uuidtools (~> 2.1)
- dm-validations (1.2.0)
- dm-core (~> 1.2.0)
- do_sqlite3 (0.10.14)
- data_objects (= 0.10.14)
- erubis (2.7.0)
- fastercsv (1.5.5)
- http_router (0.11.1)
- rack (>= 1.0.0)
- url_mount (~> 0.2.1)
- i18n (0.6.9)
- json (1.8.1)
- mail (2.5.4)
- mime-types (~> 1.16)
- treetop (~> 1.4.8)
- mime-types (1.25.1)
- minitest (5.3.4)
- moneta (0.7.20)
- multi_json (1.10.1)
- padrino (0.12.2)
- padrino-admin (= 0.12.2)
- padrino-cache (= 0.12.2)
- padrino-core (= 0.12.2)
- padrino-gen (= 0.12.2)
- padrino-helpers (= 0.12.2)
- padrino-mailer (= 0.12.2)
- padrino-support (= 0.12.2)
- padrino-admin (0.12.2)
- padrino-core (= 0.12.2)
- padrino-helpers (= 0.12.2)
- padrino-cache (0.12.2)
- moneta (~> 0.7.0)
- padrino-core (= 0.12.2)
- padrino-helpers (= 0.12.2)
- padrino-core (0.12.2)
- activesupport (>= 3.1)
- http_router (~> 0.11.0)
- padrino-support (= 0.12.2)
- rack-protection (>= 1.5.0)
- sinatra (~> 1.4.2)
- thor (~> 0.18.0)
- padrino-gen (0.12.2)
- bundler (~> 1.0)
- padrino-core (= 0.12.2)
- padrino-helpers (0.12.2)
- i18n (~> 0.6, >= 0.6.7)
- padrino-support (= 0.12.2)
- tilt (~> 1.4.1)
- padrino-mailer (0.12.2)
- mail (~> 2.5.3)
- padrino-core (= 0.12.2)
- padrino-support (0.12.2)
- activesupport (>= 3.1)
- polyglot (0.3.4)
- rack (1.5.2)
- rack-protection (1.5.3)
- rack
- rack-test (0.6.2)
- rack (>= 1.0)
- rake (10.3.2)
- rspec (2.14.1)
- rspec-core (~> 2.14.0)
- rspec-expectations (~> 2.14.0)
- rspec-mocks (~> 2.14.0)
- rspec-core (2.14.8)
- rspec-expectations (2.14.5)
- diff-lcs (>= 1.1.3, < 2.0)
- rspec-mocks (2.14.6)
- sinatra (1.4.5)
- rack (~> 1.4)
- rack-protection (~> 1.4)
- tilt (~> 1.3, >= 1.3.4)
- stringex (1.5.1)
- thor (0.18.1)
- thread_safe (0.3.3)
- tilt (1.4.1)
- treetop (1.4.15)
- polyglot
- polyglot (>= 0.3.1)
- tzinfo (1.1.0)
- thread_safe (~> 0.1)
- url_mount (0.2.1)
- rack
- uuidtools (2.1.4)
-
-PLATFORMS
- ruby
-
-DEPENDENCIES
- bcrypt
- database_cleaner
- dm-aggregates
- dm-constraints
- dm-core
- dm-migrations
- dm-sqlite-adapter
- dm-timestamps
- dm-types
- dm-validations
- erubis (~> 2.7.0)
- padrino (= 0.12.2)
- rack-test
- rake
- rspec
diff --git a/padrino/notejam/Rakefile b/padrino/notejam/Rakefile
deleted file mode 100644
index 98c59df4b..000000000
--- a/padrino/notejam/Rakefile
+++ /dev/null
@@ -1,6 +0,0 @@
-require 'bundler/setup'
-require 'padrino-core/cli/rake'
-
-PadrinoTasks.use(:database)
-PadrinoTasks.use(:datamapper)
-PadrinoTasks.init
diff --git a/padrino/notejam/admin/app.rb b/padrino/notejam/admin/app.rb
deleted file mode 100644
index 1e960c1ea..000000000
--- a/padrino/notejam/admin/app.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-module Notejam
- class Admin < Padrino::Application
- register Padrino::Mailer
- register Padrino::Helpers
- register Padrino::Admin::AccessControl
-
- ##
- # Application configuration options
- #
- # set :raise_errors, true # Raise exceptions (will stop application) (default for test)
- # set :dump_errors, true # Exception backtraces are written to STDERR (default for production/development)
- # set :show_exceptions, true # Shows a stack trace in browser (default for development)
- # set :logging, true # Logging in STDOUT for development and file for production (default only for development)
- # set :public_folder, "foo/bar" # Location for static assets (default root/public)
- # set :reload, false # Reload application files (default in development)
- # set :default_builder, "foo" # Set a custom form builder (default 'StandardFormBuilder')
- # set :locale_path, "bar" # Set path for I18n translations (default your_app/locales)
- # disable :sessions # Disabled sessions by default (enable if needed)
- # disable :flash # Disables sinatra-flash (enabled by default if Sinatra::Flash is defined)
- # layout :my_layout # Layout can be in views/layouts/foo.ext or views/foo.ext (default :application)
- #
-
- set :admin_model, 'Account'
- set :login_page, '/sessions/new'
-
- enable :sessions
- disable :store_location
-
- access_control.roles_for :any do |role|
- role.protect '/'
- role.allow '/sessions'
- end
-
- access_control.roles_for :admin do |role|
- role.project_module :accounts, '/accounts'
- end
-
- # Custom error management
- error(403) { @title = "Error 403"; render('errors/403', :layout => :error) }
- error(404) { @title = "Error 404"; render('errors/404', :layout => :error) }
- error(500) { @title = "Error 500"; render('errors/500', :layout => :error) }
- end
-end
diff --git a/padrino/notejam/admin/controllers/accounts.rb b/padrino/notejam/admin/controllers/accounts.rb
deleted file mode 100644
index c5230d05f..000000000
--- a/padrino/notejam/admin/controllers/accounts.rb
+++ /dev/null
@@ -1,90 +0,0 @@
-Notejam::Admin.controllers :accounts do
- get :index do
- @title = "Accounts"
- @accounts = Account.all
- render 'accounts/index'
- end
-
- get :new do
- @title = pat(:new_title, :model => 'account')
- @account = Account.new
- render 'accounts/new'
- end
-
- post :create do
- @account = Account.new(params[:account])
- if @account.save
- @title = pat(:create_title, :model => "account #{@account.id}")
- flash[:success] = pat(:create_success, :model => 'Account')
- params[:save_and_continue] ? redirect(url(:accounts, :index)) : redirect(url(:accounts, :edit, :id => @account.id))
- else
- @title = pat(:create_title, :model => 'account')
- flash.now[:error] = pat(:create_error, :model => 'account')
- render 'accounts/new'
- end
- end
-
- get :edit, :with => :id do
- @title = pat(:edit_title, :model => "account #{params[:id]}")
- @account = Account.get(params[:id])
- if @account
- render 'accounts/edit'
- else
- flash[:warning] = pat(:create_error, :model => 'account', :id => "#{params[:id]}")
- halt 404
- end
- end
-
- put :update, :with => :id do
- @title = pat(:update_title, :model => "account #{params[:id]}")
- @account = Account.get(params[:id])
- if @account
- if @account.update(params[:account])
- flash[:success] = pat(:update_success, :model => 'Account', :id => "#{params[:id]}")
- params[:save_and_continue] ?
- redirect(url(:accounts, :index)) :
- redirect(url(:accounts, :edit, :id => @account.id))
- else
- flash.now[:error] = pat(:update_error, :model => 'account')
- render 'accounts/edit'
- end
- else
- flash[:warning] = pat(:update_warning, :model => 'account', :id => "#{params[:id]}")
- halt 404
- end
- end
-
- delete :destroy, :with => :id do
- @title = "Accounts"
- account = Account.get(params[:id])
- if account
- if account != current_account && account.destroy
- flash[:success] = pat(:delete_success, :model => 'Account', :id => "#{params[:id]}")
- else
- flash[:error] = pat(:delete_error, :model => 'account')
- end
- redirect url(:accounts, :index)
- else
- flash[:warning] = pat(:delete_warning, :model => 'account', :id => "#{params[:id]}")
- halt 404
- end
- end
-
- delete :destroy_many do
- @title = "Accounts"
- unless params[:account_ids]
- flash[:error] = pat(:destroy_many_error, :model => 'account')
- redirect(url(:accounts, :index))
- end
- ids = params[:account_ids].split(',').map(&:strip)
- accounts = Account.all(:id => ids)
-
- if accounts.include? current_account
- flash[:error] = pat(:delete_error, :model => 'account')
- elsif accounts.destroy
-
- flash[:success] = pat(:destroy_many_success, :model => 'Accounts', :ids => "#{ids.to_sentence}")
- end
- redirect url(:accounts, :index)
- end
-end
diff --git a/padrino/notejam/admin/controllers/base.rb b/padrino/notejam/admin/controllers/base.rb
deleted file mode 100644
index 22e502e59..000000000
--- a/padrino/notejam/admin/controllers/base.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-Notejam::Admin.controllers :base do
- get :index, :map => "/" do
- render "base/index"
- end
-end
diff --git a/padrino/notejam/admin/controllers/sessions.rb b/padrino/notejam/admin/controllers/sessions.rb
deleted file mode 100644
index 7bc4491f4..000000000
--- a/padrino/notejam/admin/controllers/sessions.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-Notejam::Admin.controllers :sessions do
- get :new do
- render "/sessions/new", nil, :layout => false
- end
-
- post :create do
- if account = Account.authenticate(params[:email], params[:password])
- set_current_account(account)
- redirect url(:base, :index)
- elsif Padrino.env == :development && params[:bypass]
- account = Account.first
- set_current_account(account)
- redirect url(:base, :index)
- else
- params[:email] = h(params[:email])
- flash.now[:error] = pat('login.error')
- render "/sessions/new", nil, :layout => false
- end
- end
-
- delete :destroy do
- set_current_account(nil)
- redirect url(:sessions, :new)
- end
-end
diff --git a/padrino/notejam/admin/views/accounts/_form.erb b/padrino/notejam/admin/views/accounts/_form.erb
deleted file mode 100644
index 8f5c1fedd..000000000
--- a/padrino/notejam/admin/views/accounts/_form.erb
+++ /dev/null
@@ -1,57 +0,0 @@
-<% error = @account.errors.key?(:name) && @account.errors[:name].count > 0 %>
-'>
- <%= f.label :name, :class => 'control-label' %>
-
- <%= f.text_field :name, :class => 'form-control input-xlarge input-with-feedback', :autofocus => true %>
- <%= error ? f.error_message_on(:name) : "Ex: a simple text" %>
-
-
-<% error = @account.errors.key?(:surname) && @account.errors[:surname].count > 0 %>
-'>
- <%= f.label :surname, :class => 'control-label' %>
-
- <%= f.text_field :surname, :class => 'form-control input-xlarge input-with-feedback' %>
- <%= error ? f.error_message_on(:surname) : "Ex: a simple text" %>
-
-
-<% error = @account.errors.key?(:email) && @account.errors[:email].count > 0 %>
-'>
- <%= f.label :email, :class => 'control-label' %>
-
- <%= f.text_field :email, :class => 'form-control input-xlarge input-with-feedback' %>
- <%= error ? f.error_message_on(:email) : "Ex: a simple text" %>
-
-
-<% error = @account.errors.key?(:password) && @account.errors[:password].count > 0 %>
-'>
- <%= f.label :password, :class => 'control-label' %>
-
- <%= f.password_field :password, :class => 'form-control input-xlarge input-with-feedback' %>
- <%= error ? f.error_message_on(:password) : "Ex: a simple text" %>
-
-
-<% error = @account.errors.key?(:password_confirmation) && @account.errors[:password_confirmation].count > 0 %>
-'>
- <%= f.label :password_confirmation, :class => 'control-label' %>
-
- <%= f.password_field :password_confirmation, :class => 'form-control input-xlarge input-with-feedback' %>
- <%= error ? f.error_message_on(:password_confirmation) : "Ex: a simple text" %>
-
-
-<% error = @account.errors.key?(:role) && @account.errors[:role].count > 0 %>
-'>
- <%= f.label :role, :class => 'control-label' %>
-
- <%= f.text_field :role, :class => 'form-control input-xlarge input-with-feedback' %>
- <%= error ? f.error_message_on(:role) : "Ex: a simple text" %>
-
-
-
-
-
- <%= f.submit pat(:save), :class => 'btn btn-primary' %>
-
- <%= f.submit pat(:save_and_continue), :class => 'btn btn-info', :name => 'save_and_continue' %>
-
- <%= link_to pat(:cancel), url(:accounts, :index), :class => 'btn btn-default' %>
-
\ No newline at end of file
diff --git a/padrino/notejam/admin/views/accounts/edit.erb b/padrino/notejam/admin/views/accounts/edit.erb
deleted file mode 100644
index 9adf99f14..000000000
--- a/padrino/notejam/admin/views/accounts/edit.erb
+++ /dev/null
@@ -1,10 +0,0 @@
-
- <%= link_to tag_icon(:list, pat(:list)), url(:accounts, :index) %>
- <%= link_to tag_icon(:plus, pat(:new)), url(:accounts, :new) %>
- <%= link_to tag_icon(:edit, pat(:edit)), url(:accounts, :edit, :id => @account.id) %>
-
-
- <% form_for :account, url(:accounts, :update, :id => @account.id), :method => :put, :class => 'form-horizontal' do |f| %>
- <%= partial 'accounts/form', :locals => { :f => f } %>
- <% end %>
-
diff --git a/padrino/notejam/admin/views/accounts/index.erb b/padrino/notejam/admin/views/accounts/index.erb
deleted file mode 100644
index c12efdc4c..000000000
--- a/padrino/notejam/admin/views/accounts/index.erb
+++ /dev/null
@@ -1,74 +0,0 @@
-
- <%= link_to tag_icon(:list, pat(:list)), url(:accounts, :index) %>
- <%= link_to tag_icon(:plus, pat(:new)), url(:accounts, :new) %>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <% @accounts.each do |account| %>
-
-
- <%= check_box_tag 'account_ids[]', :value => account.id, :class => 'list-selectable-checkbox' %>
-
- <%= account.id %>
- <%= account.name %>
- <%= account.surname %>
- <%= account.email %>
-
-
- <%= link_to tag_icon(:edit), :href => url(:accounts, :edit, :id => account.id), :rel => :tooltip, :title => "#{pat(:edit)} account", :class => 'list-row-action-wrapper-link' %>
- <%= link_to tag_icon(:trash), :rel => :tooltip, :title => "#{pat(:delete)} account", :class => 'list-row-action-delete-one list-row-action-wrapper-link' %>
-
-
-
<%= pat(:delete, :model => "account") %>
-
- <%- form_tag url(:accounts, :destroy, :id => account.id), :method => :delete do %>
- <%= submit_tag pat(:delete), :class =>'list-row-action-popover-delete-one-btn btn btn-danger btn-small' %>
-
<%= pat(:cancel) %>
- <% end %>
-
-
-
- <% end %>
-
-
-
\ No newline at end of file
diff --git a/padrino/notejam/admin/views/accounts/new.erb b/padrino/notejam/admin/views/accounts/new.erb
deleted file mode 100644
index d0222f1dd..000000000
--- a/padrino/notejam/admin/views/accounts/new.erb
+++ /dev/null
@@ -1,9 +0,0 @@
-
- <%= link_to tag_icon(:list, pat(:list)), url(:accounts, :index) %>
- <%= link_to tag_icon(:plus, pat(:new)), url(:accounts, :new) %>
-
-
- <% form_for :account, url(:accounts, :create), :class => 'form-horizontal' do |f| %>
- <%= partial 'accounts/form', :locals => { :f => f } %>
- <% end %>
-
diff --git a/padrino/notejam/admin/views/base/index.erb b/padrino/notejam/admin/views/base/index.erb
deleted file mode 100644
index fcfdbb224..000000000
--- a/padrino/notejam/admin/views/base/index.erb
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
Padrino is a ruby framework built upon the Sinatra web library.
-
It was created to make it fun and easy to code more advanced web applications while still adhering to the spirit that makes Sinatra great!
-
Padrino comes shipped with a slick and beautiful Admin Interface, with the following features:
-
-
-
-
-
<%= tag_icon("cogs icon-2x", "Orm Agnostic") %>
-
<%= tag_icon("group icon-2x", "Authentication") %>
-
<%= tag_icon("tasks icon-2x", "Template Agnostic") %>
-
<%= tag_icon("flag icon-2x", "Multi Language") %>
-
<%= tag_icon("magic icon-2x", "Scaffold") %>
-
-
diff --git a/padrino/notejam/admin/views/errors/403.erb b/padrino/notejam/admin/views/errors/403.erb
deleted file mode 100644
index 4ceaca627..000000000
--- a/padrino/notejam/admin/views/errors/403.erb
+++ /dev/null
@@ -1,3 +0,0 @@
-<%= tag_icon 'minus-sign icon-3x' %>
-<%= pat('custom_errors.403.title') %>
-<%= pat('custom_errors.403.description') %>
diff --git a/padrino/notejam/admin/views/errors/404.erb b/padrino/notejam/admin/views/errors/404.erb
deleted file mode 100644
index 630469e15..000000000
--- a/padrino/notejam/admin/views/errors/404.erb
+++ /dev/null
@@ -1,3 +0,0 @@
-<%= tag_icon 'warning-sign icon-3x' %>
-<%= pat('custom_errors.404.title') %>
-<%= pat('custom_errors.404.description') %>
diff --git a/padrino/notejam/admin/views/errors/500.erb b/padrino/notejam/admin/views/errors/500.erb
deleted file mode 100644
index 8c44b9a27..000000000
--- a/padrino/notejam/admin/views/errors/500.erb
+++ /dev/null
@@ -1,3 +0,0 @@
-<%= tag_icon 'beaker icon-3x' %>
-<%= pat('custom_errors.500.title') %>
-<%= pat('custom_errors.500.description') %>
diff --git a/padrino/notejam/admin/views/layouts/application.erb b/padrino/notejam/admin/views/layouts/application.erb
deleted file mode 100644
index 49c251e25..000000000
--- a/padrino/notejam/admin/views/layouts/application.erb
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
-
-
-
-
-
- <%= @title.present? ? "#{@title} | Padrino Admin" : "Padrino Admin" %>
- <%= favicon_tag "favicon.ico" %>
-
- <%= stylesheet_link_tag 'bootstrap', 'application' %>
-
-
-
-
-
- <%= link_to 'Padrino', url(:base, :index), :class => 'navbar-brand', :title => 'Padrino Admin' %>
-
- <%= link_to tag_icon(:user), url(:accounts, :edit, :id => current_account.id), :title => pat(:profile), :class => 'navbar-nav-link' %>
-
- <%= button_to(:logout, url(:sessions, :destroy), :method => :delete, :class => 'navbar-nav-form') { content_tag :button, tag_icon(:off), :type => :submit, :title => pat(:logout), :class => 'navbar-nav-form-link' } %>
-
-
-
-
- <% project_modules.each do |project_module| %>
- <% if request.path_info =~ /^#{project_module.path}/ %>
-
- <% else %>
-
- <% end %>
- <%= link_to project_module.human_name, url(project_module.path) %>
-
- <% end %>
-
-
-
-
-
-
-
- <%= {:error => 'danger', :warning => 'warning', :success => 'success', :notice => 'info'}.map { |type, class_name| flash_tag(type, :class => "alert alert-#{class_name} fade in", :bootstrap => true) }.join.html_safe %>
-
<%= yield %>
-
-
-
-
-
-
- <%= javascript_include_tag 'jquery-1.9.0.min', (Padrino.env == :production ? 'bootstrap/bootstrap.min' : %w[bootstrap/affix bootstrap/alert bootstrap/button bootstrap/carousel bootstrap/collapse bootstrap/dropdown bootstrap/tooltip bootstrap/transition bootstrap/modal bootstrap/popover bootstrap/scrollspy bootstrap/tab]), :application %>
-
-
diff --git a/padrino/notejam/admin/views/layouts/error.erb b/padrino/notejam/admin/views/layouts/error.erb
deleted file mode 100644
index d2cce35f2..000000000
--- a/padrino/notejam/admin/views/layouts/error.erb
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
- <%= @title.present? ? "#{@title} | Padrino Admin" : "#{pat(:custom_errors.title)} | Padrino Admin" %>
- <%= favicon_tag "favicon.ico" %>
-
- <%= stylesheet_link_tag 'bootstrap', 'application' %>
-
-
-
-
-
\ No newline at end of file
diff --git a/padrino/notejam/admin/views/sessions/new.erb b/padrino/notejam/admin/views/sessions/new.erb
deleted file mode 100644
index 45cf67e31..000000000
--- a/padrino/notejam/admin/views/sessions/new.erb
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
-
- <%= @title.present? ? "#{@title} | Padrino Admin" : "#{pat('login.title')} | Padrino Admin" %>
- <%= favicon_tag "favicon.ico" %>
- <%= stylesheet_link_tag "bootstrap", "application" %>
-
-
- <% form_tag url(:sessions, :create), :class=>"login form-horizontal" do %>
-
-
-
- <%= {:error => 'danger', :warning => 'warning', :success => 'success', :notice => 'info'}.map { |type, class_name| flash_tag(type, :class => "alert alert-#{class_name} fade in", :bootstrap => true) }.join.html_safe %>
-
-
-
-
-
-
-
- <%= check_box_tag :bypass %> <%= pat('login.bypass') %>
-
-
-
-
-
- <% end %>
- <%= javascript_include_tag 'jquery-1.9.0.min', (Padrino.env == :production ? 'bootstrap/bootstrap.min' : %w[bootstrap/affix bootstrap/alert bootstrap/button bootstrap/carousel bootstrap/collapse bootstrap/dropdown bootstrap/tooltip bootstrap/transition bootstrap/modal bootstrap/popover bootstrap/scrollspy bootstrap/tab]), :application %>
-
-
diff --git a/padrino/notejam/app/app.rb b/padrino/notejam/app/app.rb
deleted file mode 100644
index fd6bceeb7..000000000
--- a/padrino/notejam/app/app.rb
+++ /dev/null
@@ -1,84 +0,0 @@
-module Notejam
- class App < Padrino::Application
- register Padrino::Admin::AccessControl
- register Padrino::Mailer
- register Padrino::Helpers
-
- enable :sessions
-
- enable :authentication
- enable :store_location
- set :login_page, "/signin"
-
- access_control.roles_for :any do |role|
- role.protect '/'
- role.allow '/signin'
- role.allow '/signup'
- role.allow '/forgot-password'
- role.allow '/set-session-variable'
- end
-
- set :delivery_method, :test
-
- ##
- # Caching support.
- #
- # register Padrino::Cache
- # enable :caching
- #
- # You can customize caching store engines:
- #
- # set :cache, Padrino::Cache.new(:LRUHash) # Keeps cached values in memory
- # set :cache, Padrino::Cache.new(:Memcached) # Uses default server at localhost
- # set :cache, Padrino::Cache.new(:Memcached, '127.0.0.1:11211', :exception_retry_limit => 1)
- # set :cache, Padrino::Cache.new(:Memcached, :backend => memcached_or_dalli_instance)
- # set :cache, Padrino::Cache.new(:Redis) # Uses default server at localhost
- # set :cache, Padrino::Cache.new(:Redis, :host => '127.0.0.1', :port => 6379, :db => 0)
- # set :cache, Padrino::Cache.new(:Redis, :backend => redis_instance)
- # set :cache, Padrino::Cache.new(:Mongo) # Uses default server at localhost
- # set :cache, Padrino::Cache.new(:Mongo, :backend => mongo_client_instance)
- # set :cache, Padrino::Cache.new(:File, :dir => Padrino.root('tmp', app_name.to_s, 'cache')) # default choice
- #
-
- ##
- # Application configuration options.
- #
- # set :raise_errors, true # Raise exceptions (will stop application) (default for test)
- # set :dump_errors, true # Exception backtraces are written to STDERR (default for production/development)
- # set :show_exceptions, true # Shows a stack trace in browser (default for development)
- # set :logging, true # Logging in STDOUT for development and file for production (default only for development)
- # set :public_folder, 'foo/bar' # Location for static assets (default root/public)
- # set :reload, false # Reload application files (default in development)
- # set :default_builder, 'foo' # Set a custom form builder (default 'StandardFormBuilder')
- # set :locale_path, 'bar' # Set path for I18n translations (default your_apps_root_path/locale)
- # disable :sessions # Disabled sessions by default (enable if needed)
- # disable :flash # Disables sinatra-flash (enabled by default if Sinatra::Flash is defined)
- # layout :my_layout # Layout can be in views/layouts/foo.ext or views/foo.ext (default :application)
- #
-
- ##
- # You can configure for a specified environment like:
- #
- # configure :development do
- # set :foo, :bar
- # disable :asset_stamp # no asset timestamping for dev
- # end
- #
- configure :test do
- set :protect_from_csrf, false
- end
-
- ##
- # You can manage errors like:
- #
- # error 404 do
- # render 'errors/404'
- # end
- #
- # error 505 do
- # render 'errors/505'
- # end
- #
- DataMapper.auto_upgrade!
- end
-end
diff --git a/padrino/notejam/app/controllers/note.rb b/padrino/notejam/app/controllers/note.rb
deleted file mode 100644
index dae4210bf..000000000
--- a/padrino/notejam/app/controllers/note.rb
+++ /dev/null
@@ -1,72 +0,0 @@
-Notejam::App.controllers :note do
-
- layout :layout
-
- get :all_notes, :map => '/' do
- @notes = Note.all(
- :user_id => current_account.id, :order => order_param(params)
- )
- render "note/list"
- end
-
- get :create, :map => '/notes/create' do
- render "note/create"
- end
-
- post :create, :map => '/notes/create' do
- # @TODO datamapper validation issue?
- if params[:note][:pad_id] == "0"
- params[:note].delete("pad_id")
- else
- @pad = get_or_404(current_account.pads, params[:note][:pad_id])
- end
-
- @note = Note.new(params[:note])
- current_account.notes << @note
- if @note.save
- flash[:success] = 'Note is successfully created.'
- redirect url(:note, :view, :id => @note.id)
- end
- render "note/create"
- end
-
- get :edit, :map => '/notes/:id/edit' do
- @note = get_or_404(current_account.notes, params[:id])
- render "note/edit"
- end
-
- post :edit, :map => '/notes/:id/edit' do
- @note = get_or_404(current_account.notes, params[:id])
-
- # @TODO datamapper validation issue?
- if params[:note][:pad_id] == "0"
- params[:note].delete("pad_id")
- end
-
- @note.update(params[:note])
- if @note.save
- flash[:success] = 'Note is successfully updated.'
- redirect url(:note, :view, :id => @note.id)
- end
- render "note/edit"
- end
-
- get :view, :map => '/notes/:id' do
- @note = get_or_404(current_account.notes, params[:id])
- render "note/view"
- end
-
- get :delete, :map => '/notes/:id/delete' do
- @note = get_or_404(current_account.notes, params[:id])
- render "note/delete"
- end
-
- post :delete, :map => '/notes/:id/delete' do
- @note = get_or_404(current_account.notes, params[:id])
- @note.destroy
- flash[:success] = 'Note is successfully deleted.'
- redirect url(:note, :all_notes)
- end
-
-end
-
diff --git a/padrino/notejam/app/controllers/pad.rb b/padrino/notejam/app/controllers/pad.rb
deleted file mode 100644
index a0fec2b44..000000000
--- a/padrino/notejam/app/controllers/pad.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-Notejam::App.controllers :pad do
-
- layout :layout
-
- get :create, :map => '/pads/create' do
- render "pad/create"
- end
-
- post :create, :map => '/pads/create' do
- @pad = Pad.new(params[:pad])
- current_account.pads << @pad
- if @pad.save
- flash[:success] = 'Pad is created!'
- redirect url(:pad, :view, :id => @pad.id)
- end
- @pad.destroy
- render "pad/create"
- end
-
- get :edit, :map => '/pads/:id/edit' do
- @pad = get_or_404(current_account.pads, params[:id])
- render "pad/edit"
- end
-
- post :edit, :map => '/pads/:id/edit' do
- @pad = get_or_404(current_account.pads, params[:id])
- @pad.update(params[:pad])
- if @pad.save
- flash[:success] = 'Pad is updated!'
- redirect url(:pad, :view, :id => @pad.id)
- end
- render "pad/edit"
- end
-
- get :delete, :map => '/pads/:id/delete' do
- @pad = get_or_404(current_account.pads, params[:id])
- render "pad/delete"
- end
-
- post :delete, :map => '/pads/:id/delete' do
- @pad = get_or_404(current_account.pads, params[:id])
- @pad.destroy
- flash[:success] = 'Pad is deleted!'
- redirect url(:note, :all_notes)
- end
-
- get :view, :map => '/pads/:id' do
- @pad = get_or_404(current_account.pads, params[:id])
- @notes = Note.all(
- :pad_id => @pad.id, :order => order_param(params)
- )
- render "pad/view"
- end
-end
-
-
diff --git a/padrino/notejam/app/controllers/user.rb b/padrino/notejam/app/controllers/user.rb
deleted file mode 100644
index 4f8b78b2e..000000000
--- a/padrino/notejam/app/controllers/user.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-Notejam::App.controllers :user do
-
- layout :user
-
- get :signup, :map => '/signup' do
- render "user/signup"
- end
-
- post :signup, :map => '/signup' do
- @user = User.new(params[:user])
- if @user.save
- flash[:success] = 'Account is created. Now you can sign in.'
- redirect url(:user, :signin)
- end
- render "user/signup"
- end
-
- get :signin, :map => '/signin' do
- render "user/signin"
- end
-
- post :signin, :map => '/signin' do
- if user = User.authenticate(params[:email], params[:password])
- set_current_account(user)
- redirect url(:note, :all_notes)
- else
- params[:email] = h(params[:email])
- flash.now[:error] = "Wrong email or password."
- render "user/signin"
- end
- end
-
- get :signout, :map => '/signout' do
- set_current_account nil
- redirect url(:pad, :create)
- end
-
- get :settings, :map => '/settings' do
- @user = current_account
- render "user/settings"
- end
-
- post :settings, :map => '/settings' do
- @user = current_account
- if @user.has_password? params[:current_password]
- params[:user][:crypted_password] = nil
- @user.update(params[:user])
- if @user.save
- flash[:success] = 'Password was successfully changed.'
- redirect url(:note, :all_notes)
- end
- else
- flash[:error] = 'Entered current password is incorrect.'
- redirect url(:user, :settings)
- end
-
- render "user/settings"
- end
-
- get :forgot_password, :map => '/forgot-password' do
- render "user/forgot-password"
- end
-
- post :forgot_password, :map => '/forgot-password' do
- @user = User.first(:email => params[:email])
- if @user
- new_password = generate_password
- @user.password = new_password
- @user.save
-
- deliver(:mailer, :new_password_email, @user.email, new_password)
-
- flash[:success] = 'New password sent to your email.'
- redirect url(:user, :signin)
- end
- flash[:error] = 'No users found'
- redirect url(:user, :forgot_password)
- end
-end
diff --git a/padrino/notejam/app/helpers.rb b/padrino/notejam/app/helpers.rb
deleted file mode 100644
index 30145873f..000000000
--- a/padrino/notejam/app/helpers.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-# Helper methods defined here can be accessed in any controller or view in the application
-
-module Notejam
- class App
- def get_or_404(model, id)
- model.get(id) or halt 404, "Page not found"
- end
-
- def smart_date(datetime)
- diff = Date.today - datetime.to_date
- days = diff.to_i
- if days == 0
- 'Today at ' + datetime.strftime("%H:%M")
- elsif days == 1
- 'Yesterday'
- elsif days > 1 && days <= 7
- days.to_s + " days ago"
- else
- datetime.strftime("%d %b %Y")
- end
- end
-
- def field_errors(field, model)
- if model && model.errors[field].any?
- errors = ""
- model.errors[field].each do |message|
- errors << "#{message} "
- end
- errors << " "
- errors.html_safe
- end
- end
-
- def order_param(params)
- order = params[:order] || "-updated_at"
- {"name" => :name.asc,
- "-name" => :name.desc,
- "updated_at" => :updated_at.asc,
- "-updated_at" => :updated_at.desc}[order]
- end
-
- def generate_password
- # weak password generation
- (0...8).map { ('a'..'z').to_a[rand(26)] }.join
- end
- end
-end
diff --git a/padrino/notejam/app/helpers/user_helper.rb b/padrino/notejam/app/helpers/user_helper.rb
deleted file mode 100644
index 6ae8670de..000000000
--- a/padrino/notejam/app/helpers/user_helper.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-# Helper methods defined here can be accessed in any controller or view in the application
-
-module Notejam
- class App
- module UserHelper
- end
-
- helpers UserHelper
- end
-end
diff --git a/padrino/notejam/app/mailers.rb b/padrino/notejam/app/mailers.rb
deleted file mode 100644
index 08739db6f..000000000
--- a/padrino/notejam/app/mailers.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-##
-# Mailer methods can be defined using the simple format:
-#
-# email :registration_email do |name, user|
-# from 'admin@site.com'
-# to user.email
-# subject 'Welcome to the site!'
-# locals :name => name
-# content_type 'text/html' # optional, defaults to plain/text
-# via :sendmail # optional, to smtp if defined, otherwise sendmail
-# render 'registration_email'
-# end
-#
-# You can set the default delivery settings from your app through:
-#
-# set :delivery_method, :smtp => {
-# :address => 'smtp.yourserver.com',
-# :port => '25',
-# :user_name => 'user',
-# :password => 'pass',
-# :authentication => :plain, # :plain, :login, :cram_md5, no auth by default
-# :domain => "localhost.localdomain" # the HELO domain provided by the client to the server
-# }
-#
-# or sendmail (default):
-#
-# set :delivery_method, :sendmail
-#
-# or for tests:
-#
-# set :delivery_method, :test
-#
-# or storing emails locally:
-#
-# set :delivery_method, :file => {
-# :location => "#{Padrino.root}/tmp/emails",
-# }
-#
-# and then all delivered mail will use these settings unless otherwise specified.
-#
-
-Notejam::App.mailer :notifier do
- # Message definitions here ...
-end
diff --git a/padrino/notejam/app/mailers/mailer.rb b/padrino/notejam/app/mailers/mailer.rb
deleted file mode 100644
index 51101ee5f..000000000
--- a/padrino/notejam/app/mailers/mailer.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-Notejam::App.mailer :mailer do
-
- email :new_password_email do |email, password|
- from 'noreply@notejamapp.com'
- to email
- subject 'New notejam password'
- locals :password => password, :email => email
- render 'mailer/new_password_email'
- end
-
-end
diff --git a/padrino/notejam/app/views/layouts/layout.html.erb b/padrino/notejam/app/views/layouts/layout.html.erb
deleted file mode 100644
index 15e0edb51..000000000
--- a/padrino/notejam/app/views/layouts/layout.html.erb
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
-
-
-
-
-
- <%= yield_content(:page_title) %>
-
-
-
-
-
-
-
- <%= stylesheet_link_tag "http://cdnjs.cloudflare.com/ajax/libs/skeleton/1.2/base.min.css", media: "all" %>
- <%= stylesheet_link_tag "http://cdnjs.cloudflare.com/ajax/libs/skeleton/1.2/skeleton.min.css", media: "all" %>
- <%= stylesheet_link_tag "http://cdnjs.cloudflare.com/ajax/libs/skeleton/1.2/layout.css", media: "all" %>
- <%= stylesheet_link_tag "style", media: "all" %>
-
-
- <%= csrf_meta_tags %>
-
-
-
-
-
-
-
- <% if current_account %>
- <%= current_account.email %>: <%= link_to "Account Settings", url_for(:user, :settings) %>
Sign out
- <% else %>
-
Sign In Sign Up
- <% end %>
-
-
-
-
-
- <% if content_for?(:pad_menu) %>
- <%= yield_content(:pad_menu) %>
- <% else %>
-
-
My pads
-
- <% if current_account.pads.count.nonzero? %>
-
- <% current_account.pads.each do |pad| -%>
- <%= link_to pad.name, url_for(:pad, :view, :id => pad.id) %>
- <% end -%>
-
- <% else %>
- No pads
- <% end %>
-
- New pad
-
-
- <% end %>
-
-
- <% flash.each do |name, msg| -%>
-
<%= msg %>
- <% end -%>
-
- <%= content_for?(:content) ? yield_content(:content) : yield %>
-
-
-
-
-
-
-
diff --git a/padrino/notejam/app/views/layouts/user.html.erb b/padrino/notejam/app/views/layouts/user.html.erb
deleted file mode 100644
index 34579b994..000000000
--- a/padrino/notejam/app/views/layouts/user.html.erb
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-
-
-
-
-
-
- <%= yield_content(:page_title) %>
-
-
-
-
-
-
-
- <%= stylesheet_link_tag "http://cdnjs.cloudflare.com/ajax/libs/skeleton/1.2/base.min.css", media: "all" %>
- <%= stylesheet_link_tag "http://cdnjs.cloudflare.com/ajax/libs/skeleton/1.2/skeleton.min.css", media: "all" %>
- <%= stylesheet_link_tag "http://cdnjs.cloudflare.com/ajax/libs/skeleton/1.2/layout.css", media: "all" %>
- <%= stylesheet_link_tag "style", media: "all" %>
-
-
- <%= csrf_meta_tags %>
-
-
-
-
-
-
-
-
-
-
-
- <% flash.each do |name, msg| -%>
-
<%= msg %>
- <% end -%>
-
- <%= content_for?(:content) ? yield_content(:content) : yield %>
-
-
-
-
-
-
-
diff --git a/padrino/notejam/app/views/mailers/mailer/new_password_email.erb b/padrino/notejam/app/views/mailers/mailer/new_password_email.erb
deleted file mode 100644
index 3d48fc0b9..000000000
--- a/padrino/notejam/app/views/mailers/mailer/new_password_email.erb
+++ /dev/null
@@ -1,5 +0,0 @@
-Hi, <%= @email %>
-=========================================
-
-Your new password is <%= @password %>
-
diff --git a/padrino/notejam/app/views/note/create.html.erb b/padrino/notejam/app/views/note/create.html.erb
deleted file mode 100644
index 8aa32eeea..000000000
--- a/padrino/notejam/app/views/note/create.html.erb
+++ /dev/null
@@ -1,18 +0,0 @@
-<% content_for :page_title do %>New note<% end %>
-
-<% form_for :note, url(:note, :create), {:class => "note"} do |f| %>
- <%= f.label :name %>
- <%= f.text_field :name %>
- <%= field_errors :name, @note %>
-
- <%= f.label :text %>
- <%= f.text_area :text %>
- <%= field_errors :text, @note %>
-
- <%= f.label :pad %>
- <%= f.select :pad_id, :collection => current_account.pads, :fields => ['name', 'id'], :include_blank => ['-------', 0], :selected => params[:pad] %>
-
- <%= f.submit "Create" %>
-<% end %>
-
-
diff --git a/padrino/notejam/app/views/note/delete.html.erb b/padrino/notejam/app/views/note/delete.html.erb
deleted file mode 100644
index fff921148..000000000
--- a/padrino/notejam/app/views/note/delete.html.erb
+++ /dev/null
@@ -1,9 +0,0 @@
-<% content_for :page_title do %><%= @note.name %><% end %>
-
-Are you sure you want to delete <%= @note.name %>?
-<% form_for :note, url(:note, :delete, :id => @note.id) do |f| %>
- <%= f.submit "Yes, I want to delete this note", :class => "red" %>
- <%= link_to "Cancel", url(:note, :view, {:id => @note.id}) %>
-<% end %>
-
-
diff --git a/padrino/notejam/app/views/note/edit.html.erb b/padrino/notejam/app/views/note/edit.html.erb
deleted file mode 100644
index a734442fa..000000000
--- a/padrino/notejam/app/views/note/edit.html.erb
+++ /dev/null
@@ -1,19 +0,0 @@
-<% content_for :page_title do %><%= @note.name %><% end %>
-
-<% form_for :note, url(:note, :edit, {:id => @note.id}), {:class => "note"} do |f| %>
- <%= f.label :name %>
- <%= f.text_field :name %>
- <%= field_errors :name, @note %>
-
- <%= f.label :text %>
- <%= f.text_area :text %>
- <%= field_errors :text, @note %>
-
- <%= f.label :pad %>
- <%= f.select :pad_id, :collection => current_account.pads, :fields => ['name', 'id'], :include_blank => ['-------', 0], :selected => params[:pad] %>
-
- <%= f.submit "Save" %>
-<% end %>
-
-
-
diff --git a/padrino/notejam/app/views/note/list.html.erb b/padrino/notejam/app/views/note/list.html.erb
deleted file mode 100644
index 9d435d93e..000000000
--- a/padrino/notejam/app/views/note/list.html.erb
+++ /dev/null
@@ -1,27 +0,0 @@
-<% content_for :page_title do %>All notes (<%= @notes.count %>)<% end %>
-<% if @notes.count.nonzero? %>
-
-<% else %>
- Create your first note.
-<% end %>
-<%= link_to "New note", url(:note, :create), :class => "button" %>
-
diff --git a/padrino/notejam/app/views/note/view.html.erb b/padrino/notejam/app/views/note/view.html.erb
deleted file mode 100644
index 8675c97cd..000000000
--- a/padrino/notejam/app/views/note/view.html.erb
+++ /dev/null
@@ -1,11 +0,0 @@
-<% content_for :page_title do %><%= @note.name %><% end %>
-
-Last edited: <%= smart_date @note.updated_at %>
-
-
- <%= @note.text %>
-
-
-<%= link_to "Edit", url(:note, :edit, :id => @note.id), {:class => "button"} %>
-<%= link_to "Delete", url(:note, :delete, :id => @note.id), {:class => "delete-note"} %>
-
diff --git a/padrino/notejam/app/views/pad/create.html.erb b/padrino/notejam/app/views/pad/create.html.erb
deleted file mode 100644
index 34de38d99..000000000
--- a/padrino/notejam/app/views/pad/create.html.erb
+++ /dev/null
@@ -1,10 +0,0 @@
-<% content_for :page_title do %>New pad<% end %>
-
-<% form_for :pad, url(:pad, :create) do |f| %>
- <%= f.label :name %>
- <%= f.text_field :name %>
- <%= field_errors :name, @pad %>
-
- <%= f.submit "Create" %>
-<% end %>
-
diff --git a/padrino/notejam/app/views/pad/delete.html.erb b/padrino/notejam/app/views/pad/delete.html.erb
deleted file mode 100644
index 5388b1086..000000000
--- a/padrino/notejam/app/views/pad/delete.html.erb
+++ /dev/null
@@ -1,8 +0,0 @@
-<% content_for :page_title do %>Delete pad: <%= @pad.name %><% end %>
-
-Are you sure you want to delete <%= @pad.name %>?
-<% form_for :pad, url(:pad, :delete, :id => @pad.id) do |f| %>
- <%= f.submit "Yes, I want to delete this pad", :class => "red" %>
- <%= link_to "Cancel", url(:pad, :edit, :id => @pad.id) %>
-<% end %>
-
diff --git a/padrino/notejam/app/views/pad/edit.html.erb b/padrino/notejam/app/views/pad/edit.html.erb
deleted file mode 100644
index 16100c5f4..000000000
--- a/padrino/notejam/app/views/pad/edit.html.erb
+++ /dev/null
@@ -1,12 +0,0 @@
-<% content_for :page_title do %><%= @pad.name %><% end %>
-
-<% form_for :pad, url(:pad, :edit, :id => @pad.id) do |f| %>
- <%= f.label :name %>
- <%= f.text_field :name %>
- <%= field_errors :name, @pad %>
-
- <%= f.submit "Save" %>
- <%= link_to "Delete pad", url(:pad, :delete, {:id => @pad.id}), :class => "red" %>
-<% end %>
-
-
diff --git a/padrino/notejam/app/views/pad/view.html.erb b/padrino/notejam/app/views/pad/view.html.erb
deleted file mode 100644
index de5345b2d..000000000
--- a/padrino/notejam/app/views/pad/view.html.erb
+++ /dev/null
@@ -1,19 +0,0 @@
-<% content_for :page_title do %><%= @pad.name %> (<%= @notes.count %>)<% end %>
-<% if @notes.count.nonzero? %>
-
-<% else %>
- Create first note in the pad.
-<% end %>
-<%= link_to "Create a note", url(:note, :create, {:pad => @pad.id}), :class => "button" %>
-<%= link_to "Pad settings", url(:pad, :edit, {:id => @pad.id}) %>
diff --git a/padrino/notejam/app/views/user/forgot-password.html.erb b/padrino/notejam/app/views/user/forgot-password.html.erb
deleted file mode 100644
index 63c58028a..000000000
--- a/padrino/notejam/app/views/user/forgot-password.html.erb
+++ /dev/null
@@ -1,10 +0,0 @@
-<% content_for :page_title do %>Forgot password?<% end %>
-
-<% form_tag({}, {:class => "offset-by-six sign-in"}) do %>
- <%= label_tag :email %>
- <%= text_field_tag :email, :required => true %>
-
- <%= submit_tag "Generate password" %>
-<% end %>
-
-
diff --git a/padrino/notejam/app/views/user/settings.html.erb b/padrino/notejam/app/views/user/settings.html.erb
deleted file mode 100644
index 3379ffdbb..000000000
--- a/padrino/notejam/app/views/user/settings.html.erb
+++ /dev/null
@@ -1,17 +0,0 @@
-<% content_for :page_title do %>Account Settings<% end %>
-
-<% form_for :user, url(:user, :settings), :class => "offset-by-six sign-in" do |f| %>
- <%= label_tag :current_password %>
- <%= password_field_tag :current_password %>
-
- <%= f.label "New password" %>
- <%= f.password_field :password %>
- <%= field_errors :password, @user %>
-
- <%= f.label :password_confirmation %>
- <%= f.password_field :password_confirmation %>
- <%= field_errors :password_confirmation, @user %>
-
- <%= f.submit "Change Password" %>
-<% end %>
-
diff --git a/padrino/notejam/app/views/user/signin.html.erb b/padrino/notejam/app/views/user/signin.html.erb
deleted file mode 100644
index fd292056a..000000000
--- a/padrino/notejam/app/views/user/signin.html.erb
+++ /dev/null
@@ -1,14 +0,0 @@
-<% content_for :page_title do %>Sign In<% end %>
-
-<% form_tag({}, {:class => "offset-by-six sign-in"}) do %>
- <%= label_tag :email %>
- <%= text_field_tag :email, :required => true %>
-
- <%= label_tag :password %>
- <%= password_field_tag :password %>
-
- <%= submit_tag "Sign In" %> or Sign Up
-
- Forgot password?
-<% end %>
-
diff --git a/padrino/notejam/app/views/user/signup.html.erb b/padrino/notejam/app/views/user/signup.html.erb
deleted file mode 100644
index 510f35e0f..000000000
--- a/padrino/notejam/app/views/user/signup.html.erb
+++ /dev/null
@@ -1,17 +0,0 @@
-<% content_for :page_title do %>Sign Up<% end %>
-
-<% form_for :user, '/signup', {:class => "offset-by-six sign-in"} do |f| %>
- <%= f.label :email %>
- <%= f.text_field :email %>
- <%= field_errors :email, @user %>
-
- <%= f.label :password %>
- <%= f.password_field :password %>
- <%= field_errors :password, @user %>
-
- <%= f.label :password_confirmation %>
- <%= f.password_field :password_confirmation %>
- <%= field_errors :password_confirmation, @user %>
-
- <%= f.submit "Sign Up" %> or Sign In
-<% end %>
diff --git a/padrino/notejam/config.ru b/padrino/notejam/config.ru
deleted file mode 100644
index 63045a023..000000000
--- a/padrino/notejam/config.ru
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env rackup
-# encoding: utf-8
-
-# This file can be used to start Padrino,
-# just execute it from the command line.
-
-require File.expand_path("../config/boot.rb", __FILE__)
-
-run Padrino.application
diff --git a/padrino/notejam/config/apps.rb b/padrino/notejam/config/apps.rb
deleted file mode 100644
index 665a82fc8..000000000
--- a/padrino/notejam/config/apps.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-##
-# This file mounts each app in the Padrino project to a specified sub-uri.
-# You can mount additional applications using any of these commands below:
-#
-# Padrino.mount('blog').to('/blog')
-# Padrino.mount('blog', :app_class => 'BlogApp').to('/blog')
-# Padrino.mount('blog', :app_file => 'path/to/blog/app.rb').to('/blog')
-#
-# You can also map apps to a specified host:
-#
-# Padrino.mount('Admin').host('admin.example.org')
-# Padrino.mount('WebSite').host(/.*\.?example.org/)
-# Padrino.mount('Foo').to('/foo').host('bar.example.org')
-#
-# Note 1: Mounted apps (by default) should be placed into the project root at '/app_name'.
-# Note 2: If you use the host matching remember to respect the order of the rules.
-#
-# By default, this file mounts the primary app which was generated with this project.
-# However, the mounted app can be modified as needed:
-#
-# Padrino.mount('AppName', :app_file => 'path/to/file', :app_class => 'BlogApp').to('/')
-#
-
-##
-# Setup global project settings for your apps. These settings are inherited by every subapp. You can
-# override these settings in the subapps as needed.
-#
-Padrino.configure_apps do
- # enable :sessions
- set :session_secret, '8c96fce57ed6f0b8e5d2eeb3dc635f959a9b092df8e3485080a2c944f25118bc'
- set :protection, :except => :path_traversal
- set :protect_from_csrf, true
- set :admin_model, 'User'
-end
-
-# Mounts the core application for this project
-
-Padrino.mount("Notejam::Admin", :app_file => Padrino.root('admin/app.rb')).to("/admin")
-Padrino.mount('Notejam::App', :app_file => Padrino.root('app/app.rb')).to('/')
diff --git a/padrino/notejam/config/boot.rb b/padrino/notejam/config/boot.rb
deleted file mode 100644
index 4d17cacae..000000000
--- a/padrino/notejam/config/boot.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-# Defines our constants
-RACK_ENV = ENV['RACK_ENV'] ||= 'development' unless defined?(RACK_ENV)
-PADRINO_ROOT = File.expand_path('../..', __FILE__) unless defined?(PADRINO_ROOT)
-
-# Load our dependencies
-require 'rubygems' unless defined?(Gem)
-require 'bundler/setup'
-Bundler.require(:default, RACK_ENV)
-
-##
-# ## Enable devel logging
-#
-# Padrino::Logger::Config[:development][:log_level] = :devel
-# Padrino::Logger::Config[:development][:log_static] = true
-#
-# ## Configure your I18n
-#
-# I18n.default_locale = :en
-# I18n.enforce_available_locales = false
-#
-# ## Configure your HTML5 data helpers
-#
-# Padrino::Helpers::TagHelpers::DATA_ATTRIBUTES.push(:dialog)
-# text_field :foo, :dialog => true
-# Generates:
-#
-# ## Add helpers to mailer
-#
-# Mail::Message.class_eval do
-# include Padrino::Helpers::NumberHelpers
-# include Padrino::Helpers::TranslationHelpers
-# end
-
-##
-# Add your before (RE)load hooks here
-#
-Padrino.before_load do
-end
-
-##
-# Add your after (RE)load hooks here
-#
-Padrino.after_load do
- DataMapper.finalize
-end
-
-Padrino.load!
diff --git a/padrino/notejam/config/database.rb b/padrino/notejam/config/database.rb
deleted file mode 100644
index 4ac6dca24..000000000
--- a/padrino/notejam/config/database.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-##
-# A MySQL connection:
-# DataMapper.setup(:default, 'mysql://user:password@localhost/the_database_name')
-#
-# # A Postgres connection:
-# DataMapper.setup(:default, 'postgres://user:password@localhost/the_database_name')
-#
-# # A Sqlite3 connection
-# DataMapper.setup(:default, "sqlite3://" + Padrino.root('db', "development.db"))
-#
-# # Setup DataMapper using config/database.yml
-# DataMapper.setup(:default, YAML.load_file(Padrino.root('config/database.yml'))[RACK_ENV])
-#
-# config/database.yml file:
-#
-# ---
-# development: &defaults
-# adapter: mysql
-# database: example_development
-# username: user
-# password: Pa55w0rd
-# host: 127.0.0.1
-#
-# test:
-# <<: *defaults
-# database: example_test
-#
-# production:
-# <<: *defaults
-# database: example_production
-#
-
-DataMapper.logger = logger
-DataMapper::Property::String.length(255)
-
-case Padrino.env
- when :development then DataMapper.setup(:default, "sqlite3://" + Padrino.root('db', "notejam.db"))
- when :production then DataMapper.setup(:default, "sqlite3://" + Padrino.root('db', "notejam_production.db"))
- when :test then DataMapper.setup(:default, "sqlite::memory:")
-end
diff --git a/padrino/notejam/db/migrate/001_create_users.rb b/padrino/notejam/db/migrate/001_create_users.rb
deleted file mode 100644
index 3688f23d9..000000000
--- a/padrino/notejam/db/migrate/001_create_users.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-migration 1, :create_users do
- up do
- create_table :users do
- column :id, Integer, :serial => true
- column :email, DataMapper::Property::String, :length => 255
- column :crypted_password, DataMapper::Property::String, :length => 255
- column :role, DataMapper::Property::String, :length => 255
- end
- end
-
- down do
- drop_table :users
- end
-end
diff --git a/padrino/notejam/db/seeds.rb b/padrino/notejam/db/seeds.rb
deleted file mode 100644
index b230f549c..000000000
--- a/padrino/notejam/db/seeds.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-# Seed add you the ability to populate your db.
-# We provide you a basic shell for interaction with the end user.
-# So try some code like below:
-#
-# name = shell.ask("What's your name?")
-# shell.say name
-#
-email = shell.ask "Which email do you want use for logging into admin?"
-password = shell.ask "Tell me the password to use:"
-
-shell.say ""
-
-account = Account.create(:email => email, :name => "Foo", :surname => "Bar", :password => password, :password_confirmation => password, :role => "admin")
-
-if account.valid?
- shell.say "================================================================="
- shell.say "Account has been successfully created, now you can login with:"
- shell.say "================================================================="
- shell.say " email: #{email}"
- shell.say " password: #{password}"
- shell.say "================================================================="
-else
- shell.say "Sorry but some thing went wrong!"
- shell.say ""
- account.errors.full_messages.each { |m| shell.say " - #{m}" }
-end
-
-shell.say ""
diff --git a/padrino/notejam/models/note.rb b/padrino/notejam/models/note.rb
deleted file mode 100644
index 13edfc386..000000000
--- a/padrino/notejam/models/note.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-class Note
- include DataMapper::Resource
- include DataMapper::Validate
-
- # Properties
- property :id, Serial
- property :name, String
- property :text, Text
-
- belongs_to :user
- belongs_to :pad, :required => false
-
- property :created_at, DateTime
- property :updated_at, DateTime
-
- # Validations
- validates_presence_of :name
- validates_presence_of :text
-end
-
-
diff --git a/padrino/notejam/models/pad.rb b/padrino/notejam/models/pad.rb
deleted file mode 100644
index c4d6c3de1..000000000
--- a/padrino/notejam/models/pad.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-class Pad
- include DataMapper::Resource
- include DataMapper::Validate
-
- # Properties
- property :id, Serial
- property :name, String
-
- belongs_to :user
-
- has n, :notes
-
- # Validations
- validates_presence_of :name
-end
-
diff --git a/padrino/notejam/models/user.rb b/padrino/notejam/models/user.rb
deleted file mode 100644
index 11e5a73c1..000000000
--- a/padrino/notejam/models/user.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-class User
- include DataMapper::Resource
- include DataMapper::Validate
- attr_accessor :password, :password_confirmation
-
- # Properties
- property :id, Serial
- property :email, String
- property :crypted_password, String, :length => 70
- property :role, String
-
- has n, :pads
- has n, :notes
-
- # Validations
- validates_presence_of :email
- validates_format_of :email, :with => :email_address
- validates_uniqueness_of :email
- validates_presence_of :password, :if => :password_required
- validates_presence_of :password_confirmation, :if => :password_required
- validates_length_of :password, :min => 6, :max => 32, :if => :password_required
- validates_confirmation_of :password, :if => :password_required
-
-
- # Callbacks
- before :save, :encrypt_password
-
- ##
- # This method is for authentication purpose.
- #
- def self.authenticate(email, password)
- account = first(:conditions => ["lower(email) = lower(?)", email]) if email.present?
- account && account.has_password?(password) ? account : nil
- end
-
- ##
- # This method is used by AuthenticationHelper
- #
- def self.find_by_id(id)
- get(id) rescue nil
- end
-
- def has_password?(password)
- ::BCrypt::Password.new(crypted_password) == password
- end
-
- private
-
- def password_required
- crypted_password.blank? || password.present?
- end
-
- def encrypt_password
- self.crypted_password = ::BCrypt::Password.create(password) if password.present?
- end
-end
diff --git a/padrino/notejam/public/admin/images/favicon.ico b/padrino/notejam/public/admin/images/favicon.ico
deleted file mode 100644
index 4e26b1989..000000000
Binary files a/padrino/notejam/public/admin/images/favicon.ico and /dev/null differ
diff --git a/padrino/notejam/public/admin/images/font/FontAwesome.otf b/padrino/notejam/public/admin/images/font/FontAwesome.otf
deleted file mode 100644
index 70125459f..000000000
Binary files a/padrino/notejam/public/admin/images/font/FontAwesome.otf and /dev/null differ
diff --git a/padrino/notejam/public/admin/images/font/fontawesome-webfont.eot b/padrino/notejam/public/admin/images/font/fontawesome-webfont.eot
deleted file mode 100644
index 0662cb96b..000000000
Binary files a/padrino/notejam/public/admin/images/font/fontawesome-webfont.eot and /dev/null differ
diff --git a/padrino/notejam/public/admin/images/font/fontawesome-webfont.svg b/padrino/notejam/public/admin/images/font/fontawesome-webfont.svg
deleted file mode 100644
index 2edb4ec34..000000000
--- a/padrino/notejam/public/admin/images/font/fontawesome-webfont.svg
+++ /dev/null
@@ -1,399 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/padrino/notejam/public/admin/images/font/fontawesome-webfont.ttf b/padrino/notejam/public/admin/images/font/fontawesome-webfont.ttf
deleted file mode 100644
index d36592469..000000000
Binary files a/padrino/notejam/public/admin/images/font/fontawesome-webfont.ttf and /dev/null differ
diff --git a/padrino/notejam/public/admin/images/font/fontawesome-webfont.woff b/padrino/notejam/public/admin/images/font/fontawesome-webfont.woff
deleted file mode 100644
index b9bd17e15..000000000
Binary files a/padrino/notejam/public/admin/images/font/fontawesome-webfont.woff and /dev/null differ
diff --git a/padrino/notejam/public/admin/images/logo.png b/padrino/notejam/public/admin/images/logo.png
deleted file mode 100644
index 984fe449d..000000000
Binary files a/padrino/notejam/public/admin/images/logo.png and /dev/null differ
diff --git a/padrino/notejam/public/admin/javascripts/application.js b/padrino/notejam/public/admin/javascripts/application.js
deleted file mode 100644
index 07a04c4d2..000000000
--- a/padrino/notejam/public/admin/javascripts/application.js
+++ /dev/null
@@ -1,118 +0,0 @@
-!function($) {
- 'use strict';
-
- $(function() {
- function toggleAction(selector, disabled) {
- var method = disabled ? 'addClass' : 'removeClass';
- $(selector)[method]('list-menu-link-disabled').parent()[method]('list-menu-wrapper-disabled');
- }
- // Check/uncheck all functionality
- function checkAll(base, checked) {
- // Toggle all checkboxes on the table's body that exist on the first column.
- base.find(listCheckboxesSelector).prop('checked', checked);
- base.find('.list-row')[checked ? 'addClass' : 'removeClass']('list-row-selected');
- toggleAction('#delete-selected', !checked);
- }
- function generalToggle() {
- var checked = listCheckboxes.filter(':checked').length;
- toggleAction('#delete-selected', checked === 0);
- toggleAction('#deselect-all', checked === 0);
- toggleAction('#select-all', checked === listCheckboxesLength);
- }
-
- var listCheckboxesSelector = '.list-selectable-checkbox', list = $('#list'), alertTimeout = 4000, listCheckboxes, listCheckboxesLength;
-
- // Automatically close alerts if there was any present.
- if ($('.alert').length > 0) {
- setTimeout(function() { $('.alert').alert('close'); }, alertTimeout);
- }
-
- // Only process list-related JavaScript if there's a list!
- if (list.length > 0) {
- listCheckboxes = list.find(listCheckboxesSelector);
- listCheckboxesLength = listCheckboxes.length;
-
- // Confirm before deleting one item
- $('.list-row-action-delete-one').on('click', function(ev) {
- ev.preventDefault();
- $(this).addClass('list-row-action-wrapper-link-active')
- .siblings('.list-row-action-popover-delete-one').first().show()
- .find('.cancel').on('click', function() {
-
- $(this).parents('.list-row-action-popover-delete-one').hide()
- .siblings('.list-row-action-delete-one').removeClass('list-row-action-wrapper-link-active');
- });
- });
-
- // Select/deselect record on row's click
- list.find('.list-row').on('click', function(ev) {
- var checkbox, willBeChecked;
- ev.stopPropagation();
-
- if (ev.currentTarget.tagName == 'TR') {
- checkbox = $(this).find('.list-selectable-checkbox');
- willBeChecked = !checkbox.prop('checked');
- checkbox.prop('checked', willBeChecked);
- $(this)[willBeChecked ? 'addClass' : 'removeClass']('list-row-selected');
- generalToggle();
- }
- });
- // Select all action
- $('#select-all').on('click', function(ev) {
- ev.preventDefault();
- ev.stopPropagation();
- if ($(this).is('.list-menu-link-disabled')) return;
-
- // We assume we want to stay on the dropdown to delete all perhaps
- ev.stopPropagation();
- checkAll(list, true);
- toggleAction('#select-all', true);
- toggleAction('#deselect-all', false);
- });
- // Deselect all action
- $('#deselect-all').on('click', function(ev) {
- ev.preventDefault();
- if ($(this).is('.list-menu-link-disabled')) return;
-
- checkAll(list, false);
- toggleAction('#deselect-all', true);
- toggleAction('#select-all', false);
- });
- // Delete selected
- $('#delete-selected').on('click', function(ev) {
- ev.preventDefault();
- ev.stopPropagation();
- if ($(this).is('.list-menu-link-disabled')) return;
-
- // Open the popup to confirm deletion
- $(this).parent().addClass('active').parent('.dropdown').addClass('open');
- $(this).addClass('active')
- .siblings('.list-menu-popover-delete-selected').first().show()
- .find('.cancel').on('click', function() {
-
- // Hide the popover on cancel
- $(this).parents('.list-menu-popover-delete-selected').hide()
- .siblings('#delete-selected').removeClass('active').parent().removeClass('active');
- // and close the dropdown
- $(this).parents('.dropdown').removeClass('open');
- });
-
- $(this).siblings('.list-menu-popover-delete-selected').find(':hidden[data-delete-many-ids=true]').
- val(listCheckboxes.filter(':checked').map(function() { return $(this).val(); }).toArray().join(','));
- });
-
- // Catch checkboxes check/uncheck and enable/disable the delete selected functionality
- listCheckboxes.on('click', function(ev) {
- ev.stopPropagation();
-
- $(this).parent('.list-row')[$(this).is(':checked') ? 'addClass' : 'removeClass']('list-row-selected');
-
- generalToggle();
- });
- }
-
- // Autofocus first field with an error. (usability)
- var error_input;
- if (error_input = $('.has-error :input').first()) { error_input.focus(); }
- });
-}(window.jQuery);
diff --git a/padrino/notejam/public/admin/javascripts/bootstrap/affix.js b/padrino/notejam/public/admin/javascripts/bootstrap/affix.js
deleted file mode 100644
index c7be96e1d..000000000
--- a/padrino/notejam/public/admin/javascripts/bootstrap/affix.js
+++ /dev/null
@@ -1,126 +0,0 @@
-/* ========================================================================
- * Bootstrap: affix.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#affix
- * ========================================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // AFFIX CLASS DEFINITION
- // ======================
-
- var Affix = function (element, options) {
- this.options = $.extend({}, Affix.DEFAULTS, options)
- this.$window = $(window)
- .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
- .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
-
- this.$element = $(element)
- this.affixed =
- this.unpin = null
-
- this.checkPosition()
- }
-
- Affix.RESET = 'affix affix-top affix-bottom'
-
- Affix.DEFAULTS = {
- offset: 0
- }
-
- Affix.prototype.checkPositionWithEventLoop = function () {
- setTimeout($.proxy(this.checkPosition, this), 1)
- }
-
- Affix.prototype.checkPosition = function () {
- if (!this.$element.is(':visible')) return
-
- var scrollHeight = $(document).height()
- var scrollTop = this.$window.scrollTop()
- var position = this.$element.offset()
- var offset = this.options.offset
- var offsetTop = offset.top
- var offsetBottom = offset.bottom
-
- if (typeof offset != 'object') offsetBottom = offsetTop = offset
- if (typeof offsetTop == 'function') offsetTop = offset.top()
- if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
-
- var affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? false :
- offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :
- offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false
-
- if (this.affixed === affix) return
- if (this.unpin) this.$element.css('top', '')
-
- this.affixed = affix
- this.unpin = affix == 'bottom' ? position.top - scrollTop : null
-
- this.$element.removeClass(Affix.RESET).addClass('affix' + (affix ? '-' + affix : ''))
-
- if (affix == 'bottom') {
- this.$element.offset({ top: document.body.offsetHeight - offsetBottom - this.$element.height() })
- }
- }
-
-
- // AFFIX PLUGIN DEFINITION
- // =======================
-
- var old = $.fn.affix
-
- $.fn.affix = function (option) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.affix')
- var options = typeof option == 'object' && option
-
- if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
- if (typeof option == 'string') data[option]()
- })
- }
-
- $.fn.affix.Constructor = Affix
-
-
- // AFFIX NO CONFLICT
- // =================
-
- $.fn.affix.noConflict = function () {
- $.fn.affix = old
- return this
- }
-
-
- // AFFIX DATA-API
- // ==============
-
- $(window).on('load', function () {
- $('[data-spy="affix"]').each(function () {
- var $spy = $(this)
- var data = $spy.data()
-
- data.offset = data.offset || {}
-
- if (data.offsetBottom) data.offset.bottom = data.offsetBottom
- if (data.offsetTop) data.offset.top = data.offsetTop
-
- $spy.affix(data)
- })
- })
-
-}(window.jQuery);
diff --git a/padrino/notejam/public/admin/javascripts/bootstrap/alert.js b/padrino/notejam/public/admin/javascripts/bootstrap/alert.js
deleted file mode 100644
index 663029ed8..000000000
--- a/padrino/notejam/public/admin/javascripts/bootstrap/alert.js
+++ /dev/null
@@ -1,98 +0,0 @@
-/* ========================================================================
- * Bootstrap: alert.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#alerts
- * ========================================================================
- * Copyright 2013 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // ALERT CLASS DEFINITION
- // ======================
-
- var dismiss = '[data-dismiss="alert"]'
- var Alert = function (el) {
- $(el).on('click', dismiss, this.close)
- }
-
- Alert.prototype.close = function (e) {
- var $this = $(this)
- var selector = $this.attr('data-target')
-
- if (!selector) {
- selector = $this.attr('href')
- selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
- }
-
- var $parent = $(selector)
-
- if (e) e.preventDefault()
-
- if (!$parent.length) {
- $parent = $this.hasClass('alert') ? $this : $this.parent()
- }
-
- $parent.trigger(e = $.Event('close.bs.alert'))
-
- if (e.isDefaultPrevented()) return
-
- $parent.removeClass('in')
-
- function removeElement() {
- $parent.trigger('closed.bs.alert').remove()
- }
-
- $.support.transition && $parent.hasClass('fade') ?
- $parent
- .one($.support.transition.end, removeElement)
- .emulateTransitionEnd(150) :
- removeElement()
- }
-
-
- // ALERT PLUGIN DEFINITION
- // =======================
-
- var old = $.fn.alert
-
- $.fn.alert = function (option) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.alert')
-
- if (!data) $this.data('bs.alert', (data = new Alert(this)))
- if (typeof option == 'string') data[option].call($this)
- })
- }
-
- $.fn.alert.Constructor = Alert
-
-
- // ALERT NO CONFLICT
- // =================
-
- $.fn.alert.noConflict = function () {
- $.fn.alert = old
- return this
- }
-
-
- // ALERT DATA-API
- // ==============
-
- $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
-
-}(window.jQuery);
diff --git a/padrino/notejam/public/admin/javascripts/bootstrap/bootstrap.min.js b/padrino/notejam/public/admin/javascripts/bootstrap/bootstrap.min.js
deleted file mode 100644
index 1765631f4..000000000
--- a/padrino/notejam/public/admin/javascripts/bootstrap/bootstrap.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
-* bootstrap.js v3.0.0 by @fat and @mdo
-* Copyright 2013 Twitter Inc.
-* http://www.apache.org/licenses/LICENSE-2.0
-*/
-if(!jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(window.jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]');if(a.length){var b=this.$element.find("input").prop("checked",!this.$element.hasClass("active")).trigger("change");"radio"===b.prop("type")&&a.find(".active").removeClass("active")}this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(window.jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('
').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i ').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focus",i="hover"==g?"mouseleave":"blur";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show),void 0):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide),void 0):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this.tip();this.setContent(),this.options.animation&&c.addClass("fade");var d="function"==typeof this.options.placement?this.options.placement.call(this,c[0],this.$element[0]):this.options.placement,e=/\s?auto?\s?/i,f=e.test(d);f&&(d=d.replace(e,"")||"top"),c.detach().css({top:0,left:0,display:"block"}).addClass(d),this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);var g=this.getPosition(),h=c[0].offsetWidth,i=c[0].offsetHeight;if(f){var j=this.$element.parent(),k=d,l=document.documentElement.scrollTop||document.body.scrollTop,m="body"==this.options.container?window.innerWidth:j.outerWidth(),n="body"==this.options.container?window.innerHeight:j.outerHeight(),o="body"==this.options.container?0:j.offset().left;d="bottom"==d&&g.top+g.height+i-l>n?"top":"top"==d&&g.top-l-i<0?"bottom":"right"==d&&g.right+h>m?"left":"left"==d&&g.left-h
'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery);
\ No newline at end of file
diff --git a/padrino/notejam/public/admin/javascripts/bootstrap/button.js b/padrino/notejam/public/admin/javascripts/bootstrap/button.js
deleted file mode 100644
index fc73b555f..000000000
--- a/padrino/notejam/public/admin/javascripts/bootstrap/button.js
+++ /dev/null
@@ -1,109 +0,0 @@
-/* ========================================================================
- * Bootstrap: button.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#buttons
- * ========================================================================
- * Copyright 2013 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // BUTTON PUBLIC CLASS DEFINITION
- // ==============================
-
- var Button = function (element, options) {
- this.$element = $(element)
- this.options = $.extend({}, Button.DEFAULTS, options)
- }
-
- Button.DEFAULTS = {
- loadingText: 'loading...'
- }
-
- Button.prototype.setState = function (state) {
- var d = 'disabled'
- var $el = this.$element
- var val = $el.is('input') ? 'val' : 'html'
- var data = $el.data()
-
- state = state + 'Text'
-
- if (!data.resetText) $el.data('resetText', $el[val]())
-
- $el[val](data[state] || this.options[state])
-
- // push to event loop to allow forms to submit
- setTimeout(function () {
- state == 'loadingText' ?
- $el.addClass(d).attr(d, d) :
- $el.removeClass(d).removeAttr(d);
- }, 0)
- }
-
- Button.prototype.toggle = function () {
- var $parent = this.$element.closest('[data-toggle="buttons"]')
-
- if ($parent.length) {
- var $input = this.$element.find('input')
- .prop('checked', !this.$element.hasClass('active'))
- .trigger('change')
- if ($input.prop('type') === 'radio') $parent.find('.active').removeClass('active')
- }
-
- this.$element.toggleClass('active')
- }
-
-
- // BUTTON PLUGIN DEFINITION
- // ========================
-
- var old = $.fn.button
-
- $.fn.button = function (option) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.button')
- var options = typeof option == 'object' && option
-
- if (!data) $this.data('bs.button', (data = new Button(this, options)))
-
- if (option == 'toggle') data.toggle()
- else if (option) data.setState(option)
- })
- }
-
- $.fn.button.Constructor = Button
-
-
- // BUTTON NO CONFLICT
- // ==================
-
- $.fn.button.noConflict = function () {
- $.fn.button = old
- return this
- }
-
-
- // BUTTON DATA-API
- // ===============
-
- $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) {
- var $btn = $(e.target)
- if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
- $btn.button('toggle')
- e.preventDefault()
- })
-
-}(window.jQuery);
diff --git a/padrino/notejam/public/admin/javascripts/bootstrap/carousel.js b/padrino/notejam/public/admin/javascripts/bootstrap/carousel.js
deleted file mode 100644
index d8c4c243c..000000000
--- a/padrino/notejam/public/admin/javascripts/bootstrap/carousel.js
+++ /dev/null
@@ -1,217 +0,0 @@
-/* ========================================================================
- * Bootstrap: carousel.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#carousel
- * ========================================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // CAROUSEL CLASS DEFINITION
- // =========================
-
- var Carousel = function (element, options) {
- this.$element = $(element)
- this.$indicators = this.$element.find('.carousel-indicators')
- this.options = options
- this.paused =
- this.sliding =
- this.interval =
- this.$active =
- this.$items = null
-
- this.options.pause == 'hover' && this.$element
- .on('mouseenter', $.proxy(this.pause, this))
- .on('mouseleave', $.proxy(this.cycle, this))
- }
-
- Carousel.DEFAULTS = {
- interval: 5000
- , pause: 'hover'
- , wrap: true
- }
-
- Carousel.prototype.cycle = function (e) {
- e || (this.paused = false)
-
- this.interval && clearInterval(this.interval)
-
- this.options.interval
- && !this.paused
- && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
-
- return this
- }
-
- Carousel.prototype.getActiveIndex = function () {
- this.$active = this.$element.find('.item.active')
- this.$items = this.$active.parent().children()
-
- return this.$items.index(this.$active)
- }
-
- Carousel.prototype.to = function (pos) {
- var that = this
- var activeIndex = this.getActiveIndex()
-
- if (pos > (this.$items.length - 1) || pos < 0) return
-
- if (this.sliding) return this.$element.one('slid', function () { that.to(pos) })
- if (activeIndex == pos) return this.pause().cycle()
-
- return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
- }
-
- Carousel.prototype.pause = function (e) {
- e || (this.paused = true)
-
- if (this.$element.find('.next, .prev').length && $.support.transition.end) {
- this.$element.trigger($.support.transition.end)
- this.cycle(true)
- }
-
- this.interval = clearInterval(this.interval)
-
- return this
- }
-
- Carousel.prototype.next = function () {
- if (this.sliding) return
- return this.slide('next')
- }
-
- Carousel.prototype.prev = function () {
- if (this.sliding) return
- return this.slide('prev')
- }
-
- Carousel.prototype.slide = function (type, next) {
- var $active = this.$element.find('.item.active')
- var $next = next || $active[type]()
- var isCycling = this.interval
- var direction = type == 'next' ? 'left' : 'right'
- var fallback = type == 'next' ? 'first' : 'last'
- var that = this
-
- if (!$next.length) {
- if (!this.options.wrap) return
- $next = this.$element.find('.item')[fallback]()
- }
-
- this.sliding = true
-
- isCycling && this.pause()
-
- var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })
-
- if ($next.hasClass('active')) return
-
- if (this.$indicators.length) {
- this.$indicators.find('.active').removeClass('active')
- this.$element.one('slid', function () {
- var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
- $nextIndicator && $nextIndicator.addClass('active')
- })
- }
-
- if ($.support.transition && this.$element.hasClass('slide')) {
- this.$element.trigger(e)
- if (e.isDefaultPrevented()) return
- $next.addClass(type)
- $next[0].offsetWidth // force reflow
- $active.addClass(direction)
- $next.addClass(direction)
- $active
- .one($.support.transition.end, function () {
- $next.removeClass([type, direction].join(' ')).addClass('active')
- $active.removeClass(['active', direction].join(' '))
- that.sliding = false
- setTimeout(function () { that.$element.trigger('slid') }, 0)
- })
- .emulateTransitionEnd(600)
- } else {
- this.$element.trigger(e)
- if (e.isDefaultPrevented()) return
- $active.removeClass('active')
- $next.addClass('active')
- this.sliding = false
- this.$element.trigger('slid')
- }
-
- isCycling && this.cycle()
-
- return this
- }
-
-
- // CAROUSEL PLUGIN DEFINITION
- // ==========================
-
- var old = $.fn.carousel
-
- $.fn.carousel = function (option) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.carousel')
- var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
- var action = typeof option == 'string' ? option : options.slide
-
- if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
- if (typeof option == 'number') data.to(option)
- else if (action) data[action]()
- else if (options.interval) data.pause().cycle()
- })
- }
-
- $.fn.carousel.Constructor = Carousel
-
-
- // CAROUSEL NO CONFLICT
- // ====================
-
- $.fn.carousel.noConflict = function () {
- $.fn.carousel = old
- return this
- }
-
-
- // CAROUSEL DATA-API
- // =================
-
- $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
- var $this = $(this), href
- var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
- var options = $.extend({}, $target.data(), $this.data())
- var slideIndex = $this.attr('data-slide-to')
- if (slideIndex) options.interval = false
-
- $target.carousel(options)
-
- if (slideIndex = $this.attr('data-slide-to')) {
- $target.data('bs.carousel').to(slideIndex)
- }
-
- e.preventDefault()
- })
-
- $(window).on('load', function () {
- $('[data-ride="carousel"]').each(function () {
- var $carousel = $(this)
- $carousel.carousel($carousel.data())
- })
- })
-
-}(window.jQuery);
diff --git a/padrino/notejam/public/admin/javascripts/bootstrap/collapse.js b/padrino/notejam/public/admin/javascripts/bootstrap/collapse.js
deleted file mode 100644
index 92cc0bc76..000000000
--- a/padrino/notejam/public/admin/javascripts/bootstrap/collapse.js
+++ /dev/null
@@ -1,179 +0,0 @@
-/* ========================================================================
- * Bootstrap: collapse.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#collapse
- * ========================================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // COLLAPSE PUBLIC CLASS DEFINITION
- // ================================
-
- var Collapse = function (element, options) {
- this.$element = $(element)
- this.options = $.extend({}, Collapse.DEFAULTS, options)
- this.transitioning = null
-
- if (this.options.parent) this.$parent = $(this.options.parent)
- if (this.options.toggle) this.toggle()
- }
-
- Collapse.DEFAULTS = {
- toggle: true
- }
-
- Collapse.prototype.dimension = function () {
- var hasWidth = this.$element.hasClass('width')
- return hasWidth ? 'width' : 'height'
- }
-
- Collapse.prototype.show = function () {
- if (this.transitioning || this.$element.hasClass('in')) return
-
- var startEvent = $.Event('show.bs.collapse')
- this.$element.trigger(startEvent)
- if (startEvent.isDefaultPrevented()) return
-
- var actives = this.$parent && this.$parent.find('> .panel > .in')
-
- if (actives && actives.length) {
- var hasData = actives.data('bs.collapse')
- if (hasData && hasData.transitioning) return
- actives.collapse('hide')
- hasData || actives.data('bs.collapse', null)
- }
-
- var dimension = this.dimension()
-
- this.$element
- .removeClass('collapse')
- .addClass('collapsing')
- [dimension](0)
-
- this.transitioning = 1
-
- var complete = function () {
- this.$element
- .removeClass('collapsing')
- .addClass('in')
- [dimension]('auto')
- this.transitioning = 0
- this.$element.trigger('shown.bs.collapse')
- }
-
- if (!$.support.transition) return complete.call(this)
-
- var scrollSize = $.camelCase(['scroll', dimension].join('-'))
-
- this.$element
- .one($.support.transition.end, $.proxy(complete, this))
- .emulateTransitionEnd(350)
- [dimension](this.$element[0][scrollSize])
- }
-
- Collapse.prototype.hide = function () {
- if (this.transitioning || !this.$element.hasClass('in')) return
-
- var startEvent = $.Event('hide.bs.collapse')
- this.$element.trigger(startEvent)
- if (startEvent.isDefaultPrevented()) return
-
- var dimension = this.dimension()
-
- this.$element
- [dimension](this.$element[dimension]())
- [0].offsetHeight
-
- this.$element
- .addClass('collapsing')
- .removeClass('collapse')
- .removeClass('in')
-
- this.transitioning = 1
-
- var complete = function () {
- this.transitioning = 0
- this.$element
- .trigger('hidden.bs.collapse')
- .removeClass('collapsing')
- .addClass('collapse')
- }
-
- if (!$.support.transition) return complete.call(this)
-
- this.$element
- [dimension](0)
- .one($.support.transition.end, $.proxy(complete, this))
- .emulateTransitionEnd(350)
- }
-
- Collapse.prototype.toggle = function () {
- this[this.$element.hasClass('in') ? 'hide' : 'show']()
- }
-
-
- // COLLAPSE PLUGIN DEFINITION
- // ==========================
-
- var old = $.fn.collapse
-
- $.fn.collapse = function (option) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.collapse')
- var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
-
- if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
- if (typeof option == 'string') data[option]()
- })
- }
-
- $.fn.collapse.Constructor = Collapse
-
-
- // COLLAPSE NO CONFLICT
- // ====================
-
- $.fn.collapse.noConflict = function () {
- $.fn.collapse = old
- return this
- }
-
-
- // COLLAPSE DATA-API
- // =================
-
- $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) {
- var $this = $(this), href
- var target = $this.attr('data-target')
- || e.preventDefault()
- || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
- var $target = $(target)
- var data = $target.data('bs.collapse')
- var option = data ? 'toggle' : $this.data()
- var parent = $this.attr('data-parent')
- var $parent = parent && $(parent)
-
- if (!data || !data.transitioning) {
- if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed')
- $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
- }
-
- $target.collapse(option)
- })
-
-}(window.jQuery);
diff --git a/padrino/notejam/public/admin/javascripts/bootstrap/dropdown.js b/padrino/notejam/public/admin/javascripts/bootstrap/dropdown.js
deleted file mode 100644
index 6093f11a8..000000000
--- a/padrino/notejam/public/admin/javascripts/bootstrap/dropdown.js
+++ /dev/null
@@ -1,154 +0,0 @@
-/* ========================================================================
- * Bootstrap: dropdown.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#dropdowns
- * ========================================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // DROPDOWN CLASS DEFINITION
- // =========================
-
- var backdrop = '.dropdown-backdrop'
- var toggle = '[data-toggle=dropdown]'
- var Dropdown = function (element) {
- var $el = $(element).on('click.bs.dropdown', this.toggle)
- }
-
- Dropdown.prototype.toggle = function (e) {
- var $this = $(this)
-
- if ($this.is('.disabled, :disabled')) return
-
- var $parent = getParent($this)
- var isActive = $parent.hasClass('open')
-
- clearMenus()
-
- if (!isActive) {
- if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
- // if mobile we we use a backdrop because click events don't delegate
- $('
').insertAfter($(this)).on('click', clearMenus)
- }
-
- $parent.trigger(e = $.Event('show.bs.dropdown'))
-
- if (e.isDefaultPrevented()) return
-
- $parent
- .toggleClass('open')
- .trigger('shown.bs.dropdown')
-
- $this.focus()
- }
-
- return false
- }
-
- Dropdown.prototype.keydown = function (e) {
- if (!/(38|40|27)/.test(e.keyCode)) return
-
- var $this = $(this)
-
- e.preventDefault()
- e.stopPropagation()
-
- if ($this.is('.disabled, :disabled')) return
-
- var $parent = getParent($this)
- var isActive = $parent.hasClass('open')
-
- if (!isActive || (isActive && e.keyCode == 27)) {
- if (e.which == 27) $parent.find(toggle).focus()
- return $this.click()
- }
-
- var $items = $('[role=menu] li:not(.divider):visible a', $parent)
-
- if (!$items.length) return
-
- var index = $items.index($items.filter(':focus'))
-
- if (e.keyCode == 38 && index > 0) index-- // up
- if (e.keyCode == 40 && index < $items.length - 1) index++ // down
- if (!~index) index=0
-
- $items.eq(index).focus()
- }
-
- function clearMenus() {
- $(backdrop).remove()
- $(toggle).each(function (e) {
- var $parent = getParent($(this))
- if (!$parent.hasClass('open')) return
- $parent.trigger(e = $.Event('hide.bs.dropdown'))
- if (e.isDefaultPrevented()) return
- $parent.removeClass('open').trigger('hidden.bs.dropdown')
- })
- }
-
- function getParent($this) {
- var selector = $this.attr('data-target')
-
- if (!selector) {
- selector = $this.attr('href')
- selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
- }
-
- var $parent = selector && $(selector)
-
- return $parent && $parent.length ? $parent : $this.parent()
- }
-
-
- // DROPDOWN PLUGIN DEFINITION
- // ==========================
-
- var old = $.fn.dropdown
-
- $.fn.dropdown = function (option) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('dropdown')
-
- if (!data) $this.data('dropdown', (data = new Dropdown(this)))
- if (typeof option == 'string') data[option].call($this)
- })
- }
-
- $.fn.dropdown.Constructor = Dropdown
-
-
- // DROPDOWN NO CONFLICT
- // ====================
-
- $.fn.dropdown.noConflict = function () {
- $.fn.dropdown = old
- return this
- }
-
-
- // APPLY TO STANDARD DROPDOWN ELEMENTS
- // ===================================
-
- $(document)
- .on('click.bs.dropdown.data-api', clearMenus)
- .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
- .on('click.bs.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
- .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
-
-}(window.jQuery);
diff --git a/padrino/notejam/public/admin/javascripts/bootstrap/modal.js b/padrino/notejam/public/admin/javascripts/bootstrap/modal.js
deleted file mode 100644
index 65eba481e..000000000
--- a/padrino/notejam/public/admin/javascripts/bootstrap/modal.js
+++ /dev/null
@@ -1,246 +0,0 @@
-/* ========================================================================
- * Bootstrap: modal.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#modals
- * ========================================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // MODAL CLASS DEFINITION
- // ======================
-
- var Modal = function (element, options) {
- this.options = options
- this.$element = $(element)
- this.$backdrop =
- this.isShown = null
-
- if (this.options.remote) this.$element.load(this.options.remote)
- }
-
- Modal.DEFAULTS = {
- backdrop: true
- , keyboard: true
- , show: true
- }
-
- Modal.prototype.toggle = function (_relatedTarget) {
- return this[!this.isShown ? 'show' : 'hide'](_relatedTarget)
- }
-
- Modal.prototype.show = function (_relatedTarget) {
- var that = this
- var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
-
- this.$element.trigger(e)
-
- if (this.isShown || e.isDefaultPrevented()) return
-
- this.isShown = true
-
- this.escape()
-
- this.$element.on('click.dismiss.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
-
- this.backdrop(function () {
- var transition = $.support.transition && that.$element.hasClass('fade')
-
- if (!that.$element.parent().length) {
- that.$element.appendTo(document.body) // don't move modals dom position
- }
-
- that.$element.show()
-
- if (transition) {
- that.$element[0].offsetWidth // force reflow
- }
-
- that.$element
- .addClass('in')
- .attr('aria-hidden', false)
-
- that.enforceFocus()
-
- var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
-
- transition ?
- that.$element.find('.modal-dialog') // wait for modal to slide in
- .one($.support.transition.end, function () {
- that.$element.focus().trigger(e)
- })
- .emulateTransitionEnd(300) :
- that.$element.focus().trigger(e)
- })
- }
-
- Modal.prototype.hide = function (e) {
- if (e) e.preventDefault()
-
- e = $.Event('hide.bs.modal')
-
- this.$element.trigger(e)
-
- if (!this.isShown || e.isDefaultPrevented()) return
-
- this.isShown = false
-
- this.escape()
-
- $(document).off('focusin.bs.modal')
-
- this.$element
- .removeClass('in')
- .attr('aria-hidden', true)
- .off('click.dismiss.modal')
-
- $.support.transition && this.$element.hasClass('fade') ?
- this.$element
- .one($.support.transition.end, $.proxy(this.hideModal, this))
- .emulateTransitionEnd(300) :
- this.hideModal()
- }
-
- Modal.prototype.enforceFocus = function () {
- $(document)
- .off('focusin.bs.modal') // guard against infinite focus loop
- .on('focusin.bs.modal', $.proxy(function (e) {
- if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
- this.$element.focus()
- }
- }, this))
- }
-
- Modal.prototype.escape = function () {
- if (this.isShown && this.options.keyboard) {
- this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {
- e.which == 27 && this.hide()
- }, this))
- } else if (!this.isShown) {
- this.$element.off('keyup.dismiss.bs.modal')
- }
- }
-
- Modal.prototype.hideModal = function () {
- var that = this
- this.$element.hide()
- this.backdrop(function () {
- that.removeBackdrop()
- that.$element.trigger('hidden.bs.modal')
- })
- }
-
- Modal.prototype.removeBackdrop = function () {
- this.$backdrop && this.$backdrop.remove()
- this.$backdrop = null
- }
-
- Modal.prototype.backdrop = function (callback) {
- var that = this
- var animate = this.$element.hasClass('fade') ? 'fade' : ''
-
- if (this.isShown && this.options.backdrop) {
- var doAnimate = $.support.transition && animate
-
- this.$backdrop = $('
')
- .appendTo(document.body)
-
- this.$element.on('click.dismiss.modal', $.proxy(function (e) {
- if (e.target !== e.currentTarget) return
- this.options.backdrop == 'static'
- ? this.$element[0].focus.call(this.$element[0])
- : this.hide.call(this)
- }, this))
-
- if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
-
- this.$backdrop.addClass('in')
-
- if (!callback) return
-
- doAnimate ?
- this.$backdrop
- .one($.support.transition.end, callback)
- .emulateTransitionEnd(150) :
- callback()
-
- } else if (!this.isShown && this.$backdrop) {
- this.$backdrop.removeClass('in')
-
- $.support.transition && this.$element.hasClass('fade')?
- this.$backdrop
- .one($.support.transition.end, callback)
- .emulateTransitionEnd(150) :
- callback()
-
- } else if (callback) {
- callback()
- }
- }
-
-
- // MODAL PLUGIN DEFINITION
- // =======================
-
- var old = $.fn.modal
-
- $.fn.modal = function (option, _relatedTarget) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.modal')
- var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
-
- if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
- if (typeof option == 'string') data[option](_relatedTarget)
- else if (options.show) data.show(_relatedTarget)
- })
- }
-
- $.fn.modal.Constructor = Modal
-
-
- // MODAL NO CONFLICT
- // =================
-
- $.fn.modal.noConflict = function () {
- $.fn.modal = old
- return this
- }
-
-
- // MODAL DATA-API
- // ==============
-
- $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
- var $this = $(this)
- var href = $this.attr('href')
- var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
- var option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
-
- e.preventDefault()
-
- $target
- .modal(option, this)
- .one('hide', function () {
- $this.is(':visible') && $this.focus()
- })
- })
-
- $(document)
- .on('show.bs.modal', '.modal', function () { $(document.body).addClass('modal-open') })
- .on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') })
-
-}(window.jQuery);
diff --git a/padrino/notejam/public/admin/javascripts/bootstrap/popover.js b/padrino/notejam/public/admin/javascripts/bootstrap/popover.js
deleted file mode 100644
index ecd37ac23..000000000
--- a/padrino/notejam/public/admin/javascripts/bootstrap/popover.js
+++ /dev/null
@@ -1,117 +0,0 @@
-/* ========================================================================
- * Bootstrap: popover.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#popovers
- * ========================================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // POPOVER PUBLIC CLASS DEFINITION
- // ===============================
-
- var Popover = function (element, options) {
- this.init('popover', element, options)
- }
-
- if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
-
- Popover.DEFAULTS = $.extend({} , $.fn.tooltip.Constructor.DEFAULTS, {
- placement: 'right'
- , trigger: 'click'
- , content: ''
- , template: ''
- })
-
-
- // NOTE: POPOVER EXTENDS tooltip.js
- // ================================
-
- Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
-
- Popover.prototype.constructor = Popover
-
- Popover.prototype.getDefaults = function () {
- return Popover.DEFAULTS
- }
-
- Popover.prototype.setContent = function () {
- var $tip = this.tip()
- var title = this.getTitle()
- var content = this.getContent()
-
- $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
- $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)
-
- $tip.removeClass('fade top bottom left right in')
-
- // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
- // this manually by checking the contents.
- if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
- }
-
- Popover.prototype.hasContent = function () {
- return this.getTitle() || this.getContent()
- }
-
- Popover.prototype.getContent = function () {
- var $e = this.$element
- var o = this.options
-
- return $e.attr('data-content')
- || (typeof o.content == 'function' ?
- o.content.call($e[0]) :
- o.content)
- }
-
- Popover.prototype.arrow = function () {
- return this.$arrow = this.$arrow || this.tip().find('.arrow')
- }
-
- Popover.prototype.tip = function () {
- if (!this.$tip) this.$tip = $(this.options.template)
- return this.$tip
- }
-
-
- // POPOVER PLUGIN DEFINITION
- // =========================
-
- var old = $.fn.popover
-
- $.fn.popover = function (option) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.popover')
- var options = typeof option == 'object' && option
-
- if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
- if (typeof option == 'string') data[option]()
- })
- }
-
- $.fn.popover.Constructor = Popover
-
-
- // POPOVER NO CONFLICT
- // ===================
-
- $.fn.popover.noConflict = function () {
- $.fn.popover = old
- return this
- }
-
-}(window.jQuery);
diff --git a/padrino/notejam/public/admin/javascripts/bootstrap/scrollspy.js b/padrino/notejam/public/admin/javascripts/bootstrap/scrollspy.js
deleted file mode 100644
index 10f95f249..000000000
--- a/padrino/notejam/public/admin/javascripts/bootstrap/scrollspy.js
+++ /dev/null
@@ -1,158 +0,0 @@
-/* ========================================================================
- * Bootstrap: scrollspy.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#scrollspy
- * ========================================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // SCROLLSPY CLASS DEFINITION
- // ==========================
-
- function ScrollSpy(element, options) {
- var href
- var process = $.proxy(this.process, this)
-
- this.$element = $(element).is('body') ? $(window) : $(element)
- this.$body = $('body')
- this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process)
- this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
- this.selector = (this.options.target
- || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
- || '') + ' .nav li > a'
- this.offsets = $([])
- this.targets = $([])
- this.activeTarget = null
-
- this.refresh()
- this.process()
- }
-
- ScrollSpy.DEFAULTS = {
- offset: 10
- }
-
- ScrollSpy.prototype.refresh = function () {
- var offsetMethod = this.$element[0] == window ? 'offset' : 'position'
-
- this.offsets = $([])
- this.targets = $([])
-
- var self = this
- var $targets = this.$body
- .find(this.selector)
- .map(function () {
- var $el = $(this)
- var href = $el.data('target') || $el.attr('href')
- var $href = /^#\w/.test(href) && $(href)
-
- return ($href
- && $href.length
- && [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null
- })
- .sort(function (a, b) { return a[0] - b[0] })
- .each(function () {
- self.offsets.push(this[0])
- self.targets.push(this[1])
- })
- }
-
- ScrollSpy.prototype.process = function () {
- var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
- var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
- var maxScroll = scrollHeight - this.$scrollElement.height()
- var offsets = this.offsets
- var targets = this.targets
- var activeTarget = this.activeTarget
- var i
-
- if (scrollTop >= maxScroll) {
- return activeTarget != (i = targets.last()[0]) && this.activate(i)
- }
-
- for (i = offsets.length; i--;) {
- activeTarget != targets[i]
- && scrollTop >= offsets[i]
- && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
- && this.activate( targets[i] )
- }
- }
-
- ScrollSpy.prototype.activate = function (target) {
- this.activeTarget = target
-
- $(this.selector)
- .parents('.active')
- .removeClass('active')
-
- var selector = this.selector
- + '[data-target="' + target + '"],'
- + this.selector + '[href="' + target + '"]'
-
- var active = $(selector)
- .parents('li')
- .addClass('active')
-
- if (active.parent('.dropdown-menu').length) {
- active = active
- .closest('li.dropdown')
- .addClass('active')
- }
-
- active.trigger('activate')
- }
-
-
- // SCROLLSPY PLUGIN DEFINITION
- // ===========================
-
- var old = $.fn.scrollspy
-
- $.fn.scrollspy = function (option) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.scrollspy')
- var options = typeof option == 'object' && option
-
- if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
- if (typeof option == 'string') data[option]()
- })
- }
-
- $.fn.scrollspy.Constructor = ScrollSpy
-
-
- // SCROLLSPY NO CONFLICT
- // =====================
-
- $.fn.scrollspy.noConflict = function () {
- $.fn.scrollspy = old
- return this
- }
-
-
- // SCROLLSPY DATA-API
- // ==================
-
- $(window).on('load', function () {
- $('[data-spy="scroll"]').each(function () {
- var $spy = $(this)
- $spy.scrollspy($spy.data())
- })
- })
-
-}(window.jQuery);
diff --git a/padrino/notejam/public/admin/javascripts/bootstrap/tab.js b/padrino/notejam/public/admin/javascripts/bootstrap/tab.js
deleted file mode 100644
index e1c155920..000000000
--- a/padrino/notejam/public/admin/javascripts/bootstrap/tab.js
+++ /dev/null
@@ -1,135 +0,0 @@
-/* ========================================================================
- * Bootstrap: tab.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#tabs
- * ========================================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // TAB CLASS DEFINITION
- // ====================
-
- var Tab = function (element) {
- this.element = $(element)
- }
-
- Tab.prototype.show = function () {
- var $this = this.element
- var $ul = $this.closest('ul:not(.dropdown-menu)')
- var selector = $this.attr('data-target')
-
- if (!selector) {
- selector = $this.attr('href')
- selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
- }
-
- if ($this.parent('li').hasClass('active')) return
-
- var previous = $ul.find('.active:last a')[0]
- var e = $.Event('show.bs.tab', {
- relatedTarget: previous
- })
-
- $this.trigger(e)
-
- if (e.isDefaultPrevented()) return
-
- var $target = $(selector)
-
- this.activate($this.parent('li'), $ul)
- this.activate($target, $target.parent(), function () {
- $this.trigger({
- type: 'shown.bs.tab'
- , relatedTarget: previous
- })
- })
- }
-
- Tab.prototype.activate = function (element, container, callback) {
- var $active = container.find('> .active')
- var transition = callback
- && $.support.transition
- && $active.hasClass('fade')
-
- function next() {
- $active
- .removeClass('active')
- .find('> .dropdown-menu > .active')
- .removeClass('active')
-
- element.addClass('active')
-
- if (transition) {
- element[0].offsetWidth // reflow for transition
- element.addClass('in')
- } else {
- element.removeClass('fade')
- }
-
- if (element.parent('.dropdown-menu')) {
- element.closest('li.dropdown').addClass('active')
- }
-
- callback && callback()
- }
-
- transition ?
- $active
- .one($.support.transition.end, next)
- .emulateTransitionEnd(150) :
- next()
-
- $active.removeClass('in')
- }
-
-
- // TAB PLUGIN DEFINITION
- // =====================
-
- var old = $.fn.tab
-
- $.fn.tab = function ( option ) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.tab')
-
- if (!data) $this.data('bs.tab', (data = new Tab(this)))
- if (typeof option == 'string') data[option]()
- })
- }
-
- $.fn.tab.Constructor = Tab
-
-
- // TAB NO CONFLICT
- // ===============
-
- $.fn.tab.noConflict = function () {
- $.fn.tab = old
- return this
- }
-
-
- // TAB DATA-API
- // ============
-
- $(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
- e.preventDefault()
- $(this).tab('show')
- })
-
-}(window.jQuery);
diff --git a/padrino/notejam/public/admin/javascripts/bootstrap/tooltip.js b/padrino/notejam/public/admin/javascripts/bootstrap/tooltip.js
deleted file mode 100644
index 89802287a..000000000
--- a/padrino/notejam/public/admin/javascripts/bootstrap/tooltip.js
+++ /dev/null
@@ -1,386 +0,0 @@
-/* ========================================================================
- * Bootstrap: tooltip.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#tooltip
- * Inspired by the original jQuery.tipsy by Jason Frame
- * ========================================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // TOOLTIP PUBLIC CLASS DEFINITION
- // ===============================
-
- var Tooltip = function (element, options) {
- this.type =
- this.options =
- this.enabled =
- this.timeout =
- this.hoverState =
- this.$element = null
-
- this.init('tooltip', element, options)
- }
-
- Tooltip.DEFAULTS = {
- animation: true
- , placement: 'top'
- , selector: false
- , template: ''
- , trigger: 'hover focus'
- , title: ''
- , delay: 0
- , html: false
- , container: false
- }
-
- Tooltip.prototype.init = function (type, element, options) {
- this.enabled = true
- this.type = type
- this.$element = $(element)
- this.options = this.getOptions(options)
-
- var triggers = this.options.trigger.split(' ')
-
- for (var i = triggers.length; i--;) {
- var trigger = triggers[i]
-
- if (trigger == 'click') {
- this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
- } else if (trigger != 'manual') {
- var eventIn = trigger == 'hover' ? 'mouseenter' : 'focus'
- var eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'
-
- this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
- this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
- }
- }
-
- this.options.selector ?
- (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
- this.fixTitle()
- }
-
- Tooltip.prototype.getDefaults = function () {
- return Tooltip.DEFAULTS
- }
-
- Tooltip.prototype.getOptions = function (options) {
- options = $.extend({}, this.getDefaults(), this.$element.data(), options)
-
- if (options.delay && typeof options.delay == 'number') {
- options.delay = {
- show: options.delay
- , hide: options.delay
- }
- }
-
- return options
- }
-
- Tooltip.prototype.getDelegateOptions = function () {
- var options = {}
- var defaults = this.getDefaults()
-
- this._options && $.each(this._options, function (key, value) {
- if (defaults[key] != value) options[key] = value
- })
-
- return options
- }
-
- Tooltip.prototype.enter = function (obj) {
- var self = obj instanceof this.constructor ?
- obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)
-
- clearTimeout(self.timeout)
-
- self.hoverState = 'in'
-
- if (!self.options.delay || !self.options.delay.show) return self.show()
-
- self.timeout = setTimeout(function () {
- if (self.hoverState == 'in') self.show()
- }, self.options.delay.show)
- }
-
- Tooltip.prototype.leave = function (obj) {
- var self = obj instanceof this.constructor ?
- obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)
-
- clearTimeout(self.timeout)
-
- self.hoverState = 'out'
-
- if (!self.options.delay || !self.options.delay.hide) return self.hide()
-
- self.timeout = setTimeout(function () {
- if (self.hoverState == 'out') self.hide()
- }, self.options.delay.hide)
- }
-
- Tooltip.prototype.show = function () {
- var e = $.Event('show.bs.'+ this.type)
-
- if (this.hasContent() && this.enabled) {
- this.$element.trigger(e)
-
- if (e.isDefaultPrevented()) return
-
- var $tip = this.tip()
-
- this.setContent()
-
- if (this.options.animation) $tip.addClass('fade')
-
- var placement = typeof this.options.placement == 'function' ?
- this.options.placement.call(this, $tip[0], this.$element[0]) :
- this.options.placement
-
- var autoToken = /\s?auto?\s?/i
- var autoPlace = autoToken.test(placement)
- if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
-
- $tip
- .detach()
- .css({ top: 0, left: 0, display: 'block' })
- .addClass(placement)
-
- this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
-
- var pos = this.getPosition()
- var actualWidth = $tip[0].offsetWidth
- var actualHeight = $tip[0].offsetHeight
-
- if (autoPlace) {
- var $parent = this.$element.parent()
-
- var orgPlacement = placement
- var docScroll = document.documentElement.scrollTop || document.body.scrollTop
- var parentWidth = this.options.container == 'body' ? window.innerWidth : $parent.outerWidth()
- var parentHeight = this.options.container == 'body' ? window.innerHeight : $parent.outerHeight()
- var parentLeft = this.options.container == 'body' ? 0 : $parent.offset().left
-
- placement = placement == 'bottom' && pos.top + pos.height + actualHeight - docScroll > parentHeight ? 'top' :
- placement == 'top' && pos.top - docScroll - actualHeight < 0 ? 'bottom' :
- placement == 'right' && pos.right + actualWidth > parentWidth ? 'left' :
- placement == 'left' && pos.left - actualWidth < parentLeft ? 'right' :
- placement
-
- $tip
- .removeClass(orgPlacement)
- .addClass(placement)
- }
-
- var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
-
- this.applyPlacement(calculatedOffset, placement)
- this.$element.trigger('shown.bs.' + this.type)
- }
- }
-
- Tooltip.prototype.applyPlacement = function(offset, placement) {
- var replace
- var $tip = this.tip()
- var width = $tip[0].offsetWidth
- var height = $tip[0].offsetHeight
-
- // manually read margins because getBoundingClientRect includes difference
- var marginTop = parseInt($tip.css('margin-top'), 10)
- var marginLeft = parseInt($tip.css('margin-left'), 10)
-
- // we must check for NaN for ie 8/9
- if (isNaN(marginTop)) marginTop = 0
- if (isNaN(marginLeft)) marginLeft = 0
-
- offset.top = offset.top + marginTop
- offset.left = offset.left + marginLeft
-
- $tip
- .offset(offset)
- .addClass('in')
-
- // check to see if placing tip in new offset caused the tip to resize itself
- var actualWidth = $tip[0].offsetWidth
- var actualHeight = $tip[0].offsetHeight
-
- if (placement == 'top' && actualHeight != height) {
- replace = true
- offset.top = offset.top + height - actualHeight
- }
-
- if (/bottom|top/.test(placement)) {
- var delta = 0
-
- if (offset.left < 0) {
- delta = offset.left * -2
- offset.left = 0
-
- $tip.offset(offset)
-
- actualWidth = $tip[0].offsetWidth
- actualHeight = $tip[0].offsetHeight
- }
-
- this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
- } else {
- this.replaceArrow(actualHeight - height, actualHeight, 'top')
- }
-
- if (replace) $tip.offset(offset)
- }
-
- Tooltip.prototype.replaceArrow = function(delta, dimension, position) {
- this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + "%") : '')
- }
-
- Tooltip.prototype.setContent = function () {
- var $tip = this.tip()
- var title = this.getTitle()
-
- $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
- $tip.removeClass('fade in top bottom left right')
- }
-
- Tooltip.prototype.hide = function () {
- var that = this
- var $tip = this.tip()
- var e = $.Event('hide.bs.' + this.type)
-
- function complete() {
- if (that.hoverState != 'in') $tip.detach()
- }
-
- this.$element.trigger(e)
-
- if (e.isDefaultPrevented()) return
-
- $tip.removeClass('in')
-
- $.support.transition && this.$tip.hasClass('fade') ?
- $tip
- .one($.support.transition.end, complete)
- .emulateTransitionEnd(150) :
- complete()
-
- this.$element.trigger('hidden.bs.' + this.type)
-
- return this
- }
-
- Tooltip.prototype.fixTitle = function () {
- var $e = this.$element
- if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
- $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
- }
- }
-
- Tooltip.prototype.hasContent = function () {
- return this.getTitle()
- }
-
- Tooltip.prototype.getPosition = function () {
- var el = this.$element[0]
- return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
- width: el.offsetWidth
- , height: el.offsetHeight
- }, this.$element.offset())
- }
-
- Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
- return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
- placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
- placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
- /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
- }
-
- Tooltip.prototype.getTitle = function () {
- var title
- var $e = this.$element
- var o = this.options
-
- title = $e.attr('data-original-title')
- || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
-
- return title
- }
-
- Tooltip.prototype.tip = function () {
- return this.$tip = this.$tip || $(this.options.template)
- }
-
- Tooltip.prototype.arrow = function () {
- return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')
- }
-
- Tooltip.prototype.validate = function () {
- if (!this.$element[0].parentNode) {
- this.hide()
- this.$element = null
- this.options = null
- }
- }
-
- Tooltip.prototype.enable = function () {
- this.enabled = true
- }
-
- Tooltip.prototype.disable = function () {
- this.enabled = false
- }
-
- Tooltip.prototype.toggleEnabled = function () {
- this.enabled = !this.enabled
- }
-
- Tooltip.prototype.toggle = function (e) {
- var self = e ? $(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) : this
- self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
- }
-
- Tooltip.prototype.destroy = function () {
- this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)
- }
-
-
- // TOOLTIP PLUGIN DEFINITION
- // =========================
-
- var old = $.fn.tooltip
-
- $.fn.tooltip = function (option) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.tooltip')
- var options = typeof option == 'object' && option
-
- if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
- if (typeof option == 'string') data[option]()
- })
- }
-
- $.fn.tooltip.Constructor = Tooltip
-
-
- // TOOLTIP NO CONFLICT
- // ===================
-
- $.fn.tooltip.noConflict = function () {
- $.fn.tooltip = old
- return this
- }
-
-}(window.jQuery);
diff --git a/padrino/notejam/public/admin/javascripts/bootstrap/transition.js b/padrino/notejam/public/admin/javascripts/bootstrap/transition.js
deleted file mode 100644
index e8f318beb..000000000
--- a/padrino/notejam/public/admin/javascripts/bootstrap/transition.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/* ========================================================================
- * Bootstrap: transition.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#transitions
- * ========================================================================
- * Copyright 2013 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
- // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
- // ============================================================
-
- function transitionEnd() {
- var el = document.createElement('bootstrap')
-
- var transEndEventNames = {
- 'WebkitTransition' : 'webkitTransitionEnd'
- , 'MozTransition' : 'transitionend'
- , 'OTransition' : 'oTransitionEnd otransitionend'
- , 'transition' : 'transitionend'
- }
-
- for (var name in transEndEventNames) {
- if (el.style[name] !== undefined) {
- return { end: transEndEventNames[name] }
- }
- }
- }
-
- // http://blog.alexmaccaw.com/css-transitions
- $.fn.emulateTransitionEnd = function (duration) {
- var called = false, $el = this
- $(this).one($.support.transition.end, function () { called = true })
- var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
- setTimeout(callback, duration)
- return this
- }
-
- $(function () {
- $.support.transition = transitionEnd()
- })
-
-}(window.jQuery);
diff --git a/padrino/notejam/public/admin/javascripts/jquery-1.9.0.min.js b/padrino/notejam/public/admin/javascripts/jquery-1.9.0.min.js
deleted file mode 100644
index 50d1b22f2..000000000
--- a/padrino/notejam/public/admin/javascripts/jquery-1.9.0.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! jQuery v1.9.0 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license */(function(e,t){"use strict";function n(e){var t=e.length,n=st.type(e);return st.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}function r(e){var t=Tt[e]={};return st.each(e.match(lt)||[],function(e,n){t[n]=!0}),t}function i(e,n,r,i){if(st.acceptData(e)){var o,a,s=st.expando,u="string"==typeof n,l=e.nodeType,c=l?st.cache:e,f=l?e[s]:e[s]&&s;if(f&&c[f]&&(i||c[f].data)||!u||r!==t)return f||(l?e[s]=f=K.pop()||st.guid++:f=s),c[f]||(c[f]={},l||(c[f].toJSON=st.noop)),("object"==typeof n||"function"==typeof n)&&(i?c[f]=st.extend(c[f],n):c[f].data=st.extend(c[f].data,n)),o=c[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[st.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[st.camelCase(n)])):a=o,a}}function o(e,t,n){if(st.acceptData(e)){var r,i,o,a=e.nodeType,u=a?st.cache:e,l=a?e[st.expando]:st.expando;if(u[l]){if(t&&(r=n?u[l]:u[l].data)){st.isArray(t)?t=t.concat(st.map(t,st.camelCase)):t in r?t=[t]:(t=st.camelCase(t),t=t in r?[t]:t.split(" "));for(i=0,o=t.length;o>i;i++)delete r[t[i]];if(!(n?s:st.isEmptyObject)(r))return}(n||(delete u[l].data,s(u[l])))&&(a?st.cleanData([e],!0):st.support.deleteExpando||u!=u.window?delete u[l]:u[l]=null)}}}function a(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(Nt,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:wt.test(r)?st.parseJSON(r):r}catch(o){}st.data(e,n,r)}else r=t}return r}function s(e){var t;for(t in e)if(("data"!==t||!st.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function u(){return!0}function l(){return!1}function c(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function f(e,t,n){if(t=t||0,st.isFunction(t))return st.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return st.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=st.grep(e,function(e){return 1===e.nodeType});if(Wt.test(t))return st.filter(t,r,!n);t=st.filter(t,r)}return st.grep(e,function(e){return st.inArray(e,t)>=0===n})}function p(e){var t=zt.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function d(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function h(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function g(e){var t=nn.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function m(e,t){for(var n,r=0;null!=(n=e[r]);r++)st._data(n,"globalEval",!t||st._data(t[r],"globalEval"))}function y(e,t){if(1===t.nodeType&&st.hasData(e)){var n,r,i,o=st._data(e),a=st._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)st.event.add(t,n,s[n][r])}a.data&&(a.data=st.extend({},a.data))}}function v(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!st.support.noCloneEvent&&t[st.expando]){r=st._data(t);for(i in r.events)st.removeEvent(t,i,r.handle);t.removeAttribute(st.expando)}"script"===n&&t.text!==e.text?(h(t).text=e.text,g(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),st.support.html5Clone&&e.innerHTML&&!st.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Zt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function b(e,n){var r,i,o=0,a=e.getElementsByTagName!==t?e.getElementsByTagName(n||"*"):e.querySelectorAll!==t?e.querySelectorAll(n||"*"):t;if(!a)for(a=[],r=e.childNodes||e;null!=(i=r[o]);o++)!n||st.nodeName(i,n)?a.push(i):st.merge(a,b(i,n));return n===t||n&&st.nodeName(e,n)?st.merge([e],a):a}function x(e){Zt.test(e.type)&&(e.defaultChecked=e.checked)}function T(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Nn.length;i--;)if(t=Nn[i]+n,t in e)return t;return r}function w(e,t){return e=t||e,"none"===st.css(e,"display")||!st.contains(e.ownerDocument,e)}function N(e,t){for(var n,r=[],i=0,o=e.length;o>i;i++)n=e[i],n.style&&(r[i]=st._data(n,"olddisplay"),t?(r[i]||"none"!==n.style.display||(n.style.display=""),""===n.style.display&&w(n)&&(r[i]=st._data(n,"olddisplay",S(n.nodeName)))):r[i]||w(n)||st._data(n,"olddisplay",st.css(n,"display")));for(i=0;o>i;i++)n=e[i],n.style&&(t&&"none"!==n.style.display&&""!==n.style.display||(n.style.display=t?r[i]||"":"none"));return e}function C(e,t,n){var r=mn.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function k(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;4>o;o+=2)"margin"===n&&(a+=st.css(e,n+wn[o],!0,i)),r?("content"===n&&(a-=st.css(e,"padding"+wn[o],!0,i)),"margin"!==n&&(a-=st.css(e,"border"+wn[o]+"Width",!0,i))):(a+=st.css(e,"padding"+wn[o],!0,i),"padding"!==n&&(a+=st.css(e,"border"+wn[o]+"Width",!0,i)));return a}function E(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=ln(e),a=st.support.boxSizing&&"border-box"===st.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=un(e,t,o),(0>i||null==i)&&(i=e.style[t]),yn.test(i))return i;r=a&&(st.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+k(e,t,n||(a?"border":"content"),r,o)+"px"}function S(e){var t=V,n=bn[e];return n||(n=A(e,t),"none"!==n&&n||(cn=(cn||st("").css("cssText","display:block !important")).appendTo(t.documentElement),t=(cn[0].contentWindow||cn[0].contentDocument).document,t.write(""),t.close(),n=A(e,t),cn.detach()),bn[e]=n),n}function A(e,t){var n=st(t.createElement(e)).appendTo(t.body),r=st.css(n[0],"display");return n.remove(),r}function j(e,t,n,r){var i;if(st.isArray(t))st.each(t,function(t,i){n||kn.test(e)?r(e,i):j(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==st.type(t))r(e,t);else for(i in t)j(e+"["+i+"]",t[i],n,r)}function D(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(lt)||[];if(st.isFunction(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function L(e,n,r,i){function o(u){var l;return a[u]=!0,st.each(e[u]||[],function(e,u){var c=u(n,r,i);return"string"!=typeof c||s||a[c]?s?!(l=c):t:(n.dataTypes.unshift(c),o(c),!1)}),l}var a={},s=e===$n;return o(n.dataTypes[0])||!a["*"]&&o("*")}function H(e,n){var r,i,o=st.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((o[r]?e:i||(i={}))[r]=n[r]);return i&&st.extend(!0,e,i),e}function M(e,n,r){var i,o,a,s,u=e.contents,l=e.dataTypes,c=e.responseFields;for(o in c)o in r&&(n[c[o]]=r[o]);for(;"*"===l[0];)l.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("Content-Type"));if(i)for(o in u)if(u[o]&&u[o].test(i)){l.unshift(o);break}if(l[0]in r)a=l[0];else{for(o in r){if(!l[0]||e.converters[o+" "+l[0]]){a=o;break}s||(s=o)}a=a||s}return a?(a!==l[0]&&l.unshift(a),r[a]):t}function q(e,t){var n,r,i,o,a={},s=0,u=e.dataTypes.slice(),l=u[0];if(e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=u[++s];)if("*"!==i){if("*"!==l&&l!==i){if(n=a[l+" "+i]||a["* "+i],!n)for(r in a)if(o=r.split(" "),o[1]===i&&(n=a[l+" "+o[0]]||a["* "+o[0]])){n===!0?n=a[r]:a[r]!==!0&&(i=o[0],u.splice(s--,0,i));break}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(c){return{state:"parsererror",error:n?c:"No conversion from "+l+" to "+i}}}l=i}return{state:"success",data:t}}function _(){try{return new e.XMLHttpRequest}catch(t){}}function F(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function O(){return setTimeout(function(){Qn=t}),Qn=st.now()}function B(e,t){st.each(t,function(t,n){for(var r=(rr[t]||[]).concat(rr["*"]),i=0,o=r.length;o>i;i++)if(r[i].call(e,t,n))return})}function P(e,t,n){var r,i,o=0,a=nr.length,s=st.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=Qn||O(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;u>a;a++)l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),1>o&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:st.extend({},t),opts:st.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Qn||O(),duration:n.duration,tweens:[],createTween:function(t,n){var r=st.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?s.resolveWith(e,[l,t]):s.rejectWith(e,[l,t]),this}}),c=l.props;for(R(c,l.opts.specialEasing);a>o;o++)if(r=nr[o].call(l,e,c,l.opts))return r;return B(l,c),st.isFunction(l.opts.start)&&l.opts.start.call(e,l),st.fx.timer(st.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function R(e,t){var n,r,i,o,a;for(n in e)if(r=st.camelCase(n),i=t[r],o=e[n],st.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=st.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function W(e,t,n){var r,i,o,a,s,u,l,c,f,p=this,d=e.style,h={},g=[],m=e.nodeType&&w(e);n.queue||(c=st._queueHooks(e,"fx"),null==c.unqueued&&(c.unqueued=0,f=c.empty.fire,c.empty.fire=function(){c.unqueued||f()}),c.unqueued++,p.always(function(){p.always(function(){c.unqueued--,st.queue(e,"fx").length||c.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],"inline"===st.css(e,"display")&&"none"===st.css(e,"float")&&(st.support.inlineBlockNeedsLayout&&"inline"!==S(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",st.support.shrinkWrapBlocks||p.done(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(r in t)if(o=t[r],Zn.exec(o)){if(delete t[r],u=u||"toggle"===o,o===(m?"hide":"show"))continue;g.push(r)}if(a=g.length){s=st._data(e,"fxshow")||st._data(e,"fxshow",{}),"hidden"in s&&(m=s.hidden),u&&(s.hidden=!m),m?st(e).show():p.done(function(){st(e).hide()}),p.done(function(){var t;st._removeData(e,"fxshow");for(t in h)st.style(e,t,h[t])});for(r=0;a>r;r++)i=g[r],l=p.createTween(i,m?s[i]:0),h[i]=s[i]||st.style(e,i),i in s||(s[i]=l.start,m&&(l.end=l.start,l.start="width"===i||"height"===i?1:0))}}function $(e,t,n,r,i){return new $.prototype.init(e,t,n,r,i)}function I(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=wn[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function z(e){return st.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}var X,U,V=e.document,Y=e.location,J=e.jQuery,G=e.$,Q={},K=[],Z="1.9.0",et=K.concat,tt=K.push,nt=K.slice,rt=K.indexOf,it=Q.toString,ot=Q.hasOwnProperty,at=Z.trim,st=function(e,t){return new st.fn.init(e,t,X)},ut=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,lt=/\S+/g,ct=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,ft=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,pt=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,dt=/^[\],:{}\s]*$/,ht=/(?:^|:|,)(?:\s*\[)+/g,gt=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,mt=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,yt=/^-ms-/,vt=/-([\da-z])/gi,bt=function(e,t){return t.toUpperCase()},xt=function(){V.addEventListener?(V.removeEventListener("DOMContentLoaded",xt,!1),st.ready()):"complete"===V.readyState&&(V.detachEvent("onreadystatechange",xt),st.ready())};st.fn=st.prototype={jquery:Z,constructor:st,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:ft.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof st?n[0]:n,st.merge(this,st.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:V,!0)),pt.test(i[1])&&st.isPlainObject(n))for(i in n)st.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=V.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=V,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):st.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),st.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return nt.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=st.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return st.each(this,e,t)},ready:function(e){return st.ready.promise().done(e),this},slice:function(){return this.pushStack(nt.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(st.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:tt,sort:[].sort,splice:[].splice},st.fn.init.prototype=st.fn,st.extend=st.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||st.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(e=arguments[u]))for(n in e)r=s[n],i=e[n],s!==i&&(c&&i&&(st.isPlainObject(i)||(o=st.isArray(i)))?(o?(o=!1,a=r&&st.isArray(r)?r:[]):a=r&&st.isPlainObject(r)?r:{},s[n]=st.extend(c,a,i)):i!==t&&(s[n]=i));return s},st.extend({noConflict:function(t){return e.$===st&&(e.$=G),t&&e.jQuery===st&&(e.jQuery=J),st},isReady:!1,readyWait:1,holdReady:function(e){e?st.readyWait++:st.ready(!0)},ready:function(e){if(e===!0?!--st.readyWait:!st.isReady){if(!V.body)return setTimeout(st.ready);st.isReady=!0,e!==!0&&--st.readyWait>0||(U.resolveWith(V,[st]),st.fn.trigger&&st(V).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===st.type(e)},isArray:Array.isArray||function(e){return"array"===st.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?Q[it.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==st.type(e)||e.nodeType||st.isWindow(e))return!1;try{if(e.constructor&&!ot.call(e,"constructor")&&!ot.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||ot.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||V;var r=pt.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=st.buildFragment([e],t,i),i&&st(i).remove(),st.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=st.trim(n),n&&dt.test(n.replace(gt,"@").replace(mt,"]").replace(ht,"")))?Function("return "+n)():(st.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||st.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&st.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(yt,"ms-").replace(vt,bt)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,r){var i,o=0,a=e.length,s=n(e);if(r){if(s)for(;a>o&&(i=t.apply(e[o],r),i!==!1);o++);else for(o in e)if(i=t.apply(e[o],r),i===!1)break}else if(s)for(;a>o&&(i=t.call(e[o],o,e[o]),i!==!1);o++);else for(o in e)if(i=t.call(e[o],o,e[o]),i===!1)break;return e},trim:at&&!at.call("\ufeff\u00a0")?function(e){return null==e?"":at.call(e)}:function(e){return null==e?"":(e+"").replace(ct,"")},makeArray:function(e,t){var r=t||[];return null!=e&&(n(Object(e))?st.merge(r,"string"==typeof e?[e]:e):tt.call(r,e)),r},inArray:function(e,t,n){var r;if(t){if(rt)return rt.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else for(;n[o]!==t;)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,r){var i,o=0,a=e.length,s=n(e),u=[];if(s)for(;a>o;o++)i=t(e[o],o,r),null!=i&&(u[u.length]=i);else for(o in e)i=t(e[o],o,r),null!=i&&(u[u.length]=i);return et.apply([],u)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(r=e[n],n=e,e=r),st.isFunction(e)?(i=nt.call(arguments,2),o=function(){return e.apply(n||this,i.concat(nt.call(arguments)))},o.guid=e.guid=e.guid||st.guid++,o):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===st.type(r)){o=!0;for(u in r)st.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,st.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(st(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),st.ready.promise=function(t){if(!U)if(U=st.Deferred(),"complete"===V.readyState)setTimeout(st.ready);else if(V.addEventListener)V.addEventListener("DOMContentLoaded",xt,!1),e.addEventListener("load",st.ready,!1);else{V.attachEvent("onreadystatechange",xt),e.attachEvent("onload",st.ready);var n=!1;try{n=null==e.frameElement&&V.documentElement}catch(r){}n&&n.doScroll&&function i(){if(!st.isReady){try{n.doScroll("left")}catch(e){return setTimeout(i,50)}st.ready()}}()}return U.promise(t)},st.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){Q["[object "+t+"]"]=t.toLowerCase()}),X=st(V);var Tt={};st.Callbacks=function(e){e="string"==typeof e?Tt[e]||r(e):st.extend({},e);var n,i,o,a,s,u,l=[],c=!e.once&&[],f=function(t){for(n=e.memory&&t,i=!0,u=a||0,a=0,s=l.length,o=!0;l&&s>u;u++)if(l[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}o=!1,l&&(c?c.length&&f(c.shift()):n?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function r(t){st.each(t,function(t,n){var i=st.type(n);"function"===i?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==i&&r(n)})})(arguments),o?s=l.length:n&&(a=t,f(n))}return this},remove:function(){return l&&st.each(arguments,function(e,t){for(var n;(n=st.inArray(t,l,n))>-1;)l.splice(n,1),o&&(s>=n&&s--,u>=n&&u--)}),this},has:function(e){return st.inArray(e,l)>-1},empty:function(){return l=[],this},disable:function(){return l=c=n=t,this},disabled:function(){return!l},lock:function(){return c=t,n||p.disable(),this},locked:function(){return!c},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!l||i&&!c||(o?c.push(t):f(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},st.extend({Deferred:function(e){var t=[["resolve","done",st.Callbacks("once memory"),"resolved"],["reject","fail",st.Callbacks("once memory"),"rejected"],["notify","progress",st.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return st.Deferred(function(n){st.each(t,function(t,o){var a=o[0],s=st.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&st.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?st.extend(e,r):r}},i={};return r.pipe=r.then,st.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=nt.call(arguments),a=o.length,s=1!==a||e&&st.isFunction(e.promise)?a:0,u=1===s?e:st.Deferred(),l=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?nt.call(arguments):i,r===t?u.notifyWith(n,r):--s||u.resolveWith(n,r)}};if(a>1)for(t=Array(a),n=Array(a),r=Array(a);a>i;i++)o[i]&&st.isFunction(o[i].promise)?o[i].promise().done(l(i,r,o)).fail(u.reject).progress(l(i,n,t)):--s;return s||u.resolveWith(r,o),u.promise()}}),st.support=function(){var n,r,i,o,a,s,u,l,c,f,p=V.createElement("div");if(p.setAttribute("className","t"),p.innerHTML=" a ",r=p.getElementsByTagName("*"),i=p.getElementsByTagName("a")[0],!r||!i||!r.length)return{};o=V.createElement("select"),a=o.appendChild(V.createElement("option")),s=p.getElementsByTagName("input")[0],i.style.cssText="top:1px;float:left;opacity:.5",n={getSetAttribute:"t"!==p.className,leadingWhitespace:3===p.firstChild.nodeType,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(i.getAttribute("style")),hrefNormalized:"/a"===i.getAttribute("href"),opacity:/^0.5/.test(i.style.opacity),cssFloat:!!i.style.cssFloat,checkOn:!!s.value,optSelected:a.selected,enctype:!!V.createElement("form").enctype,html5Clone:"<:nav>"!==V.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===V.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},s.checked=!0,n.noCloneChecked=s.cloneNode(!0).checked,o.disabled=!0,n.optDisabled=!a.disabled;try{delete p.test}catch(d){n.deleteExpando=!1}s=V.createElement("input"),s.setAttribute("value",""),n.input=""===s.getAttribute("value"),s.value="t",s.setAttribute("type","radio"),n.radioValue="t"===s.value,s.setAttribute("checked","t"),s.setAttribute("name","t"),u=V.createDocumentFragment(),u.appendChild(s),n.appendChecked=s.checked,n.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,p.attachEvent&&(p.attachEvent("onclick",function(){n.noCloneEvent=!1}),p.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})p.setAttribute(l="on"+f,"t"),n[f+"Bubbles"]=l in e||p.attributes[l].expando===!1;return p.style.backgroundClip="content-box",p.cloneNode(!0).style.backgroundClip="",n.clearCloneStyle="content-box"===p.style.backgroundClip,st(function(){var r,i,o,a="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",s=V.getElementsByTagName("body")[0];s&&(r=V.createElement("div"),r.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",s.appendChild(r).appendChild(p),p.innerHTML="",o=p.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",c=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",n.reliableHiddenOffsets=c&&0===o[0].offsetHeight,p.innerHTML="",p.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",n.boxSizing=4===p.offsetWidth,n.doesNotIncludeMarginInBodyOffset=1!==s.offsetTop,e.getComputedStyle&&(n.pixelPosition="1%"!==(e.getComputedStyle(p,null)||{}).top,n.boxSizingReliable="4px"===(e.getComputedStyle(p,null)||{width:"4px"}).width,i=p.appendChild(V.createElement("div")),i.style.cssText=p.style.cssText=a,i.style.marginRight=i.style.width="0",p.style.width="1px",n.reliableMarginRight=!parseFloat((e.getComputedStyle(i,null)||{}).marginRight)),p.style.zoom!==t&&(p.innerHTML="",p.style.cssText=a+"width:1px;padding:1px;display:inline;zoom:1",n.inlineBlockNeedsLayout=3===p.offsetWidth,p.style.display="block",p.innerHTML="
",p.firstChild.style.width="5px",n.shrinkWrapBlocks=3!==p.offsetWidth,s.style.zoom=1),s.removeChild(r),r=p=o=i=null)}),r=o=u=a=i=s=null,n}();var wt=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,Nt=/([A-Z])/g;st.extend({cache:{},expando:"jQuery"+(Z+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?st.cache[e[st.expando]]:e[st.expando],!!e&&!s(e)},data:function(e,t,n){return i(e,t,n,!1)},removeData:function(e,t){return o(e,t,!1)},_data:function(e,t,n){return i(e,t,n,!0)},_removeData:function(e,t){return o(e,t,!0)},acceptData:function(e){var t=e.nodeName&&st.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),st.fn.extend({data:function(e,n){var r,i,o=this[0],s=0,u=null;if(e===t){if(this.length&&(u=st.data(o),1===o.nodeType&&!st._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>s;s++)i=r[s].name,i.indexOf("data-")||(i=st.camelCase(i.substring(5)),a(o,i,u[i]));st._data(o,"parsedAttrs",!0)}return u}return"object"==typeof e?this.each(function(){st.data(this,e)}):st.access(this,function(n){return n===t?o?a(o,e,st.data(o,e)):null:(this.each(function(){st.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){st.removeData(this,e)})}}),st.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=st._data(e,n),r&&(!i||st.isArray(r)?i=st._data(e,n,st.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=st.queue(e,t),r=n.length,i=n.shift(),o=st._queueHooks(e,t),a=function(){st.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return st._data(e,n)||st._data(e,n,{empty:st.Callbacks("once memory").add(function(){st._removeData(e,t+"queue"),st._removeData(e,n)})})}}),st.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?st.queue(this[0],e):n===t?this:this.each(function(){var t=st.queue(this,e,n);st._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&st.dequeue(this,e)})},dequeue:function(e){return this.each(function(){st.dequeue(this,e)})},delay:function(e,t){return e=st.fx?st.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=st.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};for("string"!=typeof e&&(n=e,e=t),e=e||"fx";s--;)r=st._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var Ct,kt,Et=/[\t\r\n]/g,St=/\r/g,At=/^(?:input|select|textarea|button|object)$/i,jt=/^(?:a|area)$/i,Dt=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,Lt=/^(?:checked|selected)$/i,Ht=st.support.getSetAttribute,Mt=st.support.input;st.fn.extend({attr:function(e,t){return st.access(this,st.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){st.removeAttr(this,e)})},prop:function(e,t){return st.access(this,st.prop,e,t,arguments.length>1)},removeProp:function(e){return e=st.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(st.isFunction(e))return this.each(function(t){st(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(lt)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(Et," "):" ")){for(o=0;i=t[o++];)0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=st.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(st.isFunction(e))return this.each(function(t){st(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(lt)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(Et," "):"")){for(o=0;i=t[o++];)for(;r.indexOf(" "+i+" ")>=0;)r=r.replace(" "+i+" "," ");n.className=e?st.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return st.isFunction(e)?this.each(function(n){st(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n)for(var i,o=0,a=st(this),s=t,u=e.match(lt)||[];i=u[o++];)s=r?s:!a.hasClass(i),a[s?"addClass":"removeClass"](i);else("undefined"===n||"boolean"===n)&&(this.className&&st._data(this,"__className__",this.className),this.className=this.className||e===!1?"":st._data(this,"__className__")||"")})},hasClass:function(e){for(var t=" "+e+" ",n=0,r=this.length;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(Et," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=st.isFunction(e),this.each(function(r){var o,a=st(this);1===this.nodeType&&(o=i?e.call(this,r,a.val()):e,null==o?o="":"number"==typeof o?o+="":st.isArray(o)&&(o=st.map(o,function(e){return null==e?"":e+""})),n=st.valHooks[this.type]||st.valHooks[this.nodeName.toLowerCase()],n&&"set"in n&&n.set(this,o,"value")!==t||(this.value=o))});if(o)return n=st.valHooks[o.type]||st.valHooks[o.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(o,"value"))!==t?r:(r=o.value,"string"==typeof r?r.replace(St,""):null==r?"":r)}}}),st.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(st.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&st.nodeName(n.parentNode,"optgroup"))){if(t=st(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=st.makeArray(t);return st(e).find("option").each(function(){this.selected=st.inArray(st(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return e.getAttribute===t?st.prop(e,n,r):(a=1!==s||!st.isXMLDoc(e),a&&(n=n.toLowerCase(),o=st.attrHooks[n]||(Dt.test(n)?kt:Ct)),r===t?o&&a&&"get"in o&&null!==(i=o.get(e,n))?i:(e.getAttribute!==t&&(i=e.getAttribute(n)),null==i?t:i):null!==r?o&&a&&"set"in o&&(i=o.set(e,r,n))!==t?i:(e.setAttribute(n,r+""),r):(st.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(lt);if(o&&1===e.nodeType)for(;n=o[i++];)r=st.propFix[n]||n,Dt.test(n)?!Ht&&Lt.test(n)?e[st.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:st.attr(e,n,""),e.removeAttribute(Ht?n:r)},attrHooks:{type:{set:function(e,t){if(!st.support.radioValue&&"radio"===t&&st.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!st.isXMLDoc(e),a&&(n=st.propFix[n]||n,o=st.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):At.test(e.nodeName)||jt.test(e.nodeName)&&e.href?0:t}}}}),kt={get:function(e,n){var r=st.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?Mt&&Ht?null!=i:Lt.test(n)?e[st.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?st.removeAttr(e,n):Mt&&Ht||!Lt.test(n)?e.setAttribute(!Ht&&st.propFix[n]||n,n):e[st.camelCase("default-"+n)]=e[n]=!0,n}},Mt&&Ht||(st.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return st.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t
-},set:function(e,n,r){return st.nodeName(e,"input")?(e.defaultValue=n,t):Ct&&Ct.set(e,n,r)}}),Ht||(Ct=st.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},st.attrHooks.contenteditable={get:Ct.get,set:function(e,t,n){Ct.set(e,""===t?!1:t,n)}},st.each(["width","height"],function(e,n){st.attrHooks[n]=st.extend(st.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),st.support.hrefNormalized||(st.each(["href","src","width","height"],function(e,n){st.attrHooks[n]=st.extend(st.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),st.each(["href","src"],function(e,t){st.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),st.support.style||(st.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),st.support.optSelected||(st.propHooks.selected=st.extend(st.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),st.support.enctype||(st.propFix.enctype="encoding"),st.support.checkOn||st.each(["radio","checkbox"],function(){st.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),st.each(["radio","checkbox"],function(){st.valHooks[this]=st.extend(st.valHooks[this],{set:function(e,n){return st.isArray(n)?e.checked=st.inArray(st(e).val(),n)>=0:t}})});var qt=/^(?:input|select|textarea)$/i,_t=/^key/,Ft=/^(?:mouse|contextmenu)|click/,Ot=/^(?:focusinfocus|focusoutblur)$/,Bt=/^([^.]*)(?:\.(.+)|)$/;st.event={global:{},add:function(e,n,r,i,o){var a,s,u,l,c,f,p,d,h,g,m,y=3!==e.nodeType&&8!==e.nodeType&&st._data(e);if(y){for(r.handler&&(a=r,r=a.handler,o=a.selector),r.guid||(r.guid=st.guid++),(l=y.events)||(l=y.events={}),(s=y.handle)||(s=y.handle=function(e){return st===t||e&&st.event.triggered===e.type?t:st.event.dispatch.apply(s.elem,arguments)},s.elem=e),n=(n||"").match(lt)||[""],c=n.length;c--;)u=Bt.exec(n[c])||[],h=m=u[1],g=(u[2]||"").split(".").sort(),p=st.event.special[h]||{},h=(o?p.delegateType:p.bindType)||h,p=st.event.special[h]||{},f=st.extend({type:h,origType:m,data:i,handler:r,guid:r.guid,selector:o,needsContext:o&&st.expr.match.needsContext.test(o),namespace:g.join(".")},a),(d=l[h])||(d=l[h]=[],d.delegateCount=0,p.setup&&p.setup.call(e,i,g,s)!==!1||(e.addEventListener?e.addEventListener(h,s,!1):e.attachEvent&&e.attachEvent("on"+h,s))),p.add&&(p.add.call(e,f),f.handler.guid||(f.handler.guid=r.guid)),o?d.splice(d.delegateCount++,0,f):d.push(f),st.event.global[h]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,m=st.hasData(e)&&st._data(e);if(m&&(u=m.events)){for(t=(t||"").match(lt)||[""],l=t.length;l--;)if(s=Bt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){for(f=st.event.special[d]||{},d=(r?f.delegateType:f.bindType)||d,p=u[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&f.teardown.call(e,h,m.handle)!==!1||st.removeEvent(e,d,m.handle),delete u[d])}else for(d in u)st.event.remove(e,d+t[l],n,r,!0);st.isEmptyObject(u)&&(delete m.handle,st._removeData(e,"events"))}},trigger:function(n,r,i,o){var a,s,u,l,c,f,p,d=[i||V],h=n.type||n,g=n.namespace?n.namespace.split("."):[];if(s=u=i=i||V,3!==i.nodeType&&8!==i.nodeType&&!Ot.test(h+st.event.triggered)&&(h.indexOf(".")>=0&&(g=h.split("."),h=g.shift(),g.sort()),c=0>h.indexOf(":")&&"on"+h,n=n[st.expando]?n:new st.Event(h,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=g.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:st.makeArray(r,[n]),p=st.event.special[h]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!st.isWindow(i)){for(l=p.delegateType||h,Ot.test(l+h)||(s=s.parentNode);s;s=s.parentNode)d.push(s),u=s;u===(i.ownerDocument||V)&&d.push(u.defaultView||u.parentWindow||e)}for(a=0;(s=d[a++])&&!n.isPropagationStopped();)n.type=a>1?l:p.bindType||h,f=(st._data(s,"events")||{})[n.type]&&st._data(s,"handle"),f&&f.apply(s,r),f=c&&s[c],f&&st.acceptData(s)&&f.apply&&f.apply(s,r)===!1&&n.preventDefault();if(n.type=h,!(o||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===h&&st.nodeName(i,"a")||!st.acceptData(i)||!c||!i[h]||st.isWindow(i))){u=i[c],u&&(i[c]=null),st.event.triggered=h;try{i[h]()}catch(m){}st.event.triggered=t,u&&(i[c]=u)}return n.result}},dispatch:function(e){e=st.event.fix(e);var n,r,i,o,a,s=[],u=nt.call(arguments),l=(st._data(this,"events")||{})[e.type]||[],c=st.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(s=st.event.handlers.call(this,e,l),n=0;(o=s[n++])&&!e.isPropagationStopped();)for(e.currentTarget=o.elem,r=0;(a=o.handlers[r++])&&!e.isImmediatePropagationStopped();)(!e.namespace_re||e.namespace_re.test(a.namespace))&&(e.handleObj=a,e.data=a.data,i=((st.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u),i!==t&&(e.result=i)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(l.disabled!==!0||"click"!==e.type){for(i=[],r=0;u>r;r++)a=n[r],o=a.selector+" ",i[o]===t&&(i[o]=a.needsContext?st(o,this).index(l)>=0:st.find(o,this,null,[l]).length),i[o]&&i.push(a);i.length&&s.push({elem:l,handlers:i})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[st.expando])return e;var t,n,r=e,i=st.event.fixHooks[e.type]||{},o=i.props?this.props.concat(i.props):this.props;for(e=new st.Event(r),t=o.length;t--;)n=o[t],e[n]=r[n];return e.target||(e.target=r.srcElement||V),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,i.filter?i.filter(e,r):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,a=n.button,s=n.fromElement;return null==e.pageX&&null!=n.clientX&&(r=e.target.ownerDocument||V,i=r.documentElement,o=r.body,e.pageX=n.clientX+(i&&i.scrollLeft||o&&o.scrollLeft||0)-(i&&i.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(i&&i.scrollTop||o&&o.scrollTop||0)-(i&&i.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&s&&(e.relatedTarget=s===e.target?n.toElement:s),e.which||a===t||(e.which=1&a?1:2&a?3:4&a?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return st.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==V.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===V.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=st.extend(new st.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?st.event.trigger(i,null,t):st.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},st.removeEvent=V.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,n,r){var i="on"+n;e.detachEvent&&(e[i]===t&&(e[i]=null),e.detachEvent(i,r))},st.Event=function(e,n){return this instanceof st.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?u:l):this.type=e,n&&st.extend(this,n),this.timeStamp=e&&e.timeStamp||st.now(),this[st.expando]=!0,t):new st.Event(e,n)},st.Event.prototype={isDefaultPrevented:l,isPropagationStopped:l,isImmediatePropagationStopped:l,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=u,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=u,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u,this.stopPropagation()}},st.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){st.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!st.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),st.support.submitBubbles||(st.event.special.submit={setup:function(){return st.nodeName(this,"form")?!1:(st.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=st.nodeName(n,"input")||st.nodeName(n,"button")?n.form:t;r&&!st._data(r,"submitBubbles")&&(st.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),st._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&st.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return st.nodeName(this,"form")?!1:(st.event.remove(this,"._submit"),t)}}),st.support.changeBubbles||(st.event.special.change={setup:function(){return qt.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(st.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),st.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),st.event.simulate("change",this,e,!0)})),!1):(st.event.add(this,"beforeactivate._change",function(e){var t=e.target;qt.test(t.nodeName)&&!st._data(t,"changeBubbles")&&(st.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||st.event.simulate("change",this.parentNode,e,!0)}),st._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return st.event.remove(this,"._change"),!qt.test(this.nodeName)}}),st.support.focusinBubbles||st.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){st.event.simulate(t,e.target,st.event.fix(e),!0)};st.event.special[t]={setup:function(){0===n++&&V.addEventListener(e,r,!0)},teardown:function(){0===--n&&V.removeEventListener(e,r,!0)}}}),st.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(s in e)this.on(s,n,r,e[s],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=l;else if(!i)return this;return 1===o&&(a=i,i=function(e){return st().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=st.guid++)),this.each(function(){st.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,st(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=l),this.each(function(){st.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){st.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?st.event.trigger(e,n,r,!0):t},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),st.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){st.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)},_t.test(t)&&(st.event.fixHooks[t]=st.event.keyHooks),Ft.test(t)&&(st.event.fixHooks[t]=st.event.mouseHooks)}),function(e,t){function n(e){return ht.test(e+"")}function r(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>C.cacheLength&&delete e[t.shift()],e[n]=r}}function i(e){return e[P]=!0,e}function o(e){var t=L.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function a(e,t,n,r){var i,o,a,s,u,l,c,d,h,g;if((t?t.ownerDocument||t:R)!==L&&D(t),t=t||L,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!M&&!r){if(i=gt.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&O(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return Q.apply(n,K.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&W.getByClassName&&t.getElementsByClassName)return Q.apply(n,K.call(t.getElementsByClassName(a),0)),n}if(W.qsa&&!q.test(e)){if(c=!0,d=P,h=t,g=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){for(l=f(e),(c=t.getAttribute("id"))?d=c.replace(vt,"\\$&"):t.setAttribute("id",d),d="[id='"+d+"'] ",u=l.length;u--;)l[u]=d+p(l[u]);h=dt.test(e)&&t.parentNode||t,g=l.join(",")}if(g)try{return Q.apply(n,K.call(h.querySelectorAll(g),0)),n}catch(m){}finally{c||t.removeAttribute("id")}}}return x(e.replace(at,"$1"),t,n,r)}function s(e,t){for(var n=e&&t&&e.nextSibling;n;n=n.nextSibling)if(n===t)return-1;return e?1:-1}function u(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return i(function(t){return t=+t,i(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function f(e,t){var n,r,i,o,s,u,l,c=X[e+" "];if(c)return t?0:c.slice(0);for(s=e,u=[],l=C.preFilter;s;){(!n||(r=ut.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(i=[])),n=!1,(r=lt.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(at," ")}),s=s.slice(n.length));for(o in C.filter)!(r=pt[o].exec(s))||l[o]&&!(r=l[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?a.error(e):X(e,u).slice(0)}function p(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function d(e,t,n){var r=t.dir,i=n&&"parentNode"===t.dir,o=I++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,a){var s,u,l,c=$+" "+o;if(a){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,a))return!0}else for(;t=t[r];)if(1===t.nodeType||i)if(l=t[P]||(t[P]={}),(u=l[r])&&u[0]===c){if((s=u[1])===!0||s===N)return s===!0}else if(u=l[r]=[c],u[1]=e(t,n,a)||N,u[1]===!0)return!0}}function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function g(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function m(e,t,n,r,o,a){return r&&!r[P]&&(r=m(r)),o&&!o[P]&&(o=m(o,a)),i(function(i,a,s,u){var l,c,f,p=[],d=[],h=a.length,m=i||b(t||"*",s.nodeType?[s]:s,[]),y=!e||!i&&t?m:g(m,p,e,s,u),v=n?o||(i?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r)for(l=g(v,d),r(l,[],s,u),c=l.length;c--;)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f));if(i){if(o||e){if(o){for(l=[],c=v.length;c--;)(f=v[c])&&l.push(y[c]=f);o(null,v=[],l,u)}for(c=v.length;c--;)(f=v[c])&&(l=o?Z.call(i,f):p[c])>-1&&(i[l]=!(a[l]=f))}}else v=g(v===a?v.splice(h,v.length):v),o?o(null,a,v,u):Q.apply(a,v)})}function y(e){for(var t,n,r,i=e.length,o=C.relative[e[0].type],a=o||C.relative[" "],s=o?1:0,u=d(function(e){return e===t},a,!0),l=d(function(e){return Z.call(t,e)>-1},a,!0),c=[function(e,n,r){return!o&&(r||n!==j)||((t=n).nodeType?u(e,n,r):l(e,n,r))}];i>s;s++)if(n=C.relative[e[s].type])c=[d(h(c),n)];else{if(n=C.filter[e[s].type].apply(null,e[s].matches),n[P]){for(r=++s;i>r&&!C.relative[e[r].type];r++);return m(s>1&&h(c),s>1&&p(e.slice(0,s-1)).replace(at,"$1"),n,r>s&&y(e.slice(s,r)),i>r&&y(e=e.slice(r)),i>r&&p(e))}c.push(n)}return h(c)}function v(e,t){var n=0,r=t.length>0,o=e.length>0,s=function(i,s,u,l,c){var f,p,d,h=[],m=0,y="0",v=i&&[],b=null!=c,x=j,T=i||o&&C.find.TAG("*",c&&s.parentNode||s),w=$+=null==x?1:Math.E;for(b&&(j=s!==L&&s,N=n);null!=(f=T[y]);y++){if(o&&f){for(p=0;d=e[p];p++)if(d(f,s,u)){l.push(f);break}b&&($=w,N=++n)}r&&((f=!d&&f)&&m--,i&&v.push(f))}if(m+=y,r&&y!==m){for(p=0;d=t[p];p++)d(v,h,s,u);if(i){if(m>0)for(;y--;)v[y]||h[y]||(h[y]=G.call(l));h=g(h)}Q.apply(l,h),b&&!i&&h.length>0&&m+t.length>1&&a.uniqueSort(l)}return b&&($=w,j=x),v};return r?i(s):s}function b(e,t,n){for(var r=0,i=t.length;i>r;r++)a(e,t[r],n);return n}function x(e,t,n,r){var i,o,a,s,u,l=f(e);if(!r&&1===l.length){if(o=l[0]=l[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&9===t.nodeType&&!M&&C.relative[o[1].type]){if(t=C.find.ID(a.matches[0].replace(xt,Tt),t)[0],!t)return n;e=e.slice(o.shift().value.length)}for(i=pt.needsContext.test(e)?-1:o.length-1;i>=0&&(a=o[i],!C.relative[s=a.type]);i--)if((u=C.find[s])&&(r=u(a.matches[0].replace(xt,Tt),dt.test(o[0].type)&&t.parentNode||t))){if(o.splice(i,1),e=r.length&&p(o),!e)return Q.apply(n,K.call(r,0)),n;break}}return S(e,l)(r,t,M,n,dt.test(e)),n}function T(){}var w,N,C,k,E,S,A,j,D,L,H,M,q,_,F,O,B,P="sizzle"+-new Date,R=e.document,W={},$=0,I=0,z=r(),X=r(),U=r(),V=typeof t,Y=1<<31,J=[],G=J.pop,Q=J.push,K=J.slice,Z=J.indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1},et="[\\x20\\t\\r\\n\\f]",tt="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",nt=tt.replace("w","w#"),rt="([*^$|!~]?=)",it="\\["+et+"*("+tt+")"+et+"*(?:"+rt+et+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+nt+")|)|)"+et+"*\\]",ot=":("+tt+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+it.replace(3,8)+")*)|.*)\\)|)",at=RegExp("^"+et+"+|((?:^|[^\\\\])(?:\\\\.)*)"+et+"+$","g"),ut=RegExp("^"+et+"*,"+et+"*"),lt=RegExp("^"+et+"*([\\x20\\t\\r\\n\\f>+~])"+et+"*"),ct=RegExp(ot),ft=RegExp("^"+nt+"$"),pt={ID:RegExp("^#("+tt+")"),CLASS:RegExp("^\\.("+tt+")"),NAME:RegExp("^\\[name=['\"]?("+tt+")['\"]?\\]"),TAG:RegExp("^("+tt.replace("w","w*")+")"),ATTR:RegExp("^"+it),PSEUDO:RegExp("^"+ot),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+et+"*(even|odd|(([+-]|)(\\d*)n|)"+et+"*(?:([+-]|)"+et+"*(\\d+)|))"+et+"*\\)|)","i"),needsContext:RegExp("^"+et+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+et+"*((?:-\\d)?\\d*)"+et+"*\\)|)(?=[^-]|$)","i")},dt=/[\x20\t\r\n\f]*[+~]/,ht=/\{\s*\[native code\]\s*\}/,gt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,mt=/^(?:input|select|textarea|button)$/i,yt=/^h\d$/i,vt=/'|\\/g,bt=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,xt=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,Tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{K.call(H.childNodes,0)[0].nodeType}catch(wt){K=function(e){for(var t,n=[];t=this[e];e++)n.push(t);return n}}E=a.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},D=a.setDocument=function(e){var r=e?e.ownerDocument||e:R;return r!==L&&9===r.nodeType&&r.documentElement?(L=r,H=r.documentElement,M=E(r),W.tagNameNoComments=o(function(e){return e.appendChild(r.createComment("")),!e.getElementsByTagName("*").length}),W.attributes=o(function(e){e.innerHTML=" ";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),W.getByClassName=o(function(e){return e.innerHTML="
",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),W.getByName=o(function(e){e.id=P+0,e.innerHTML="
",H.insertBefore(e,H.firstChild);var t=r.getElementsByName&&r.getElementsByName(P).length===2+r.getElementsByName(P+0).length;return W.getIdNotName=!r.getElementById(P),H.removeChild(e),t}),C.attrHandle=o(function(e){return e.innerHTML=" ",e.firstChild&&typeof e.firstChild.getAttribute!==V&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},W.getIdNotName?(C.find.ID=function(e,t){if(typeof t.getElementById!==V&&!M){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},C.filter.ID=function(e){var t=e.replace(xt,Tt);return function(e){return e.getAttribute("id")===t}}):(C.find.ID=function(e,n){if(typeof n.getElementById!==V&&!M){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==V&&r.getAttributeNode("id").value===e?[r]:t:[]}},C.filter.ID=function(e){var t=e.replace(xt,Tt);return function(e){var n=typeof e.getAttributeNode!==V&&e.getAttributeNode("id");return n&&n.value===t}}),C.find.TAG=W.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==V?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i];i++)1===n.nodeType&&r.push(n);return r}return o},C.find.NAME=W.getByName&&function(e,n){return typeof n.getElementsByName!==V?n.getElementsByName(name):t},C.find.CLASS=W.getByClassName&&function(e,n){return typeof n.getElementsByClassName===V||M?t:n.getElementsByClassName(e)},_=[],q=[":focus"],(W.qsa=n(r.querySelectorAll))&&(o(function(e){e.innerHTML=" ",e.querySelectorAll("[selected]").length||q.push("\\["+et+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||q.push(":checked")}),o(function(e){e.innerHTML=" ",e.querySelectorAll("[i^='']").length&&q.push("[*^$]="+et+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),q.push(",.*:")})),(W.matchesSelector=n(F=H.matchesSelector||H.mozMatchesSelector||H.webkitMatchesSelector||H.oMatchesSelector||H.msMatchesSelector))&&o(function(e){W.disconnectedMatch=F.call(e,"div"),F.call(e,"[s!='']:x"),_.push("!=",ot)}),q=RegExp(q.join("|")),_=RegExp(_.join("|")),O=n(H.contains)||H.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},B=H.compareDocumentPosition?function(e,t){var n;return e===t?(A=!0,0):(n=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&n||e.parentNode&&11===e.parentNode.nodeType?e===r||O(R,e)?-1:t===r||O(R,t)?1:0:4&n?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var n,i=0,o=e.parentNode,a=t.parentNode,u=[e],l=[t];if(e===t)return A=!0,0;if(e.sourceIndex&&t.sourceIndex)return(~t.sourceIndex||Y)-(O(R,e)&&~e.sourceIndex||Y);if(!o||!a)return e===r?-1:t===r?1:o?-1:a?1:0;if(o===a)return s(e,t);for(n=e;n=n.parentNode;)u.unshift(n);for(n=t;n=n.parentNode;)l.unshift(n);for(;u[i]===l[i];)i++;return i?s(u[i],l[i]):u[i]===R?-1:l[i]===R?1:0},A=!1,[0,0].sort(B),W.detectDuplicates=A,L):L},a.matches=function(e,t){return a(e,null,null,t)},a.matchesSelector=function(e,t){if((e.ownerDocument||e)!==L&&D(e),t=t.replace(bt,"='$1']"),!(!W.matchesSelector||M||_&&_.test(t)||q.test(t)))try{var n=F.call(e,t);if(n||W.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return a(t,L,null,[e]).length>0},a.contains=function(e,t){return(e.ownerDocument||e)!==L&&D(e),O(e,t)},a.attr=function(e,t){var n;return(e.ownerDocument||e)!==L&&D(e),M||(t=t.toLowerCase()),(n=C.attrHandle[t])?n(e):M||W.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},a.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},a.uniqueSort=function(e){var t,n=[],r=1,i=0;if(A=!W.detectDuplicates,e.sort(B),A){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));for(;i--;)e.splice(n[i],1)}return e},k=a.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=k(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=k(t);return n},C=a.selectors={cacheLength:50,createPseudo:i,match:pt,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(xt,Tt),e[3]=(e[4]||e[5]||"").replace(xt,Tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||a.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&a.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return pt.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&ct.test(n)&&(t=f(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(xt,Tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=z[e+" "];return t||(t=RegExp("(^|"+et+")"+e+"("+et+"|$)"))&&z(e,function(e){return t.test(e.className||typeof e.getAttribute!==V&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=a.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.substr(i.length-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){for(;g;){for(f=t;f=f[g];)if(s?f.nodeName.toLowerCase()===y:1===f.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){for(c=m[P]||(m[P]={}),l=c[e]||[],d=l[0]===$&&l[1],p=l[0]===$&&l[2],f=d&&m.childNodes[d];f=++d&&f&&f[g]||(p=d=0)||h.pop();)if(1===f.nodeType&&++p&&f===t){c[e]=[$,d,p];break}}else if(v&&(l=(t[P]||(t[P]={}))[e])&&l[0]===$)p=l[1];else for(;(f=++d&&f&&f[g]||(p=d=0)||h.pop())&&((s?f.nodeName.toLowerCase()!==y:1!==f.nodeType)||!++p||(v&&((f[P]||(f[P]={}))[e]=[$,p]),f!==t)););return p-=i,p===r||0===p%r&&p/r>=0}}},PSEUDO:function(e,t){var n,r=C.pseudos[e]||C.setFilters[e.toLowerCase()]||a.error("unsupported pseudo: "+e);return r[P]?r(t):r.length>1?(n=[e,e,"",t],C.setFilters.hasOwnProperty(e.toLowerCase())?i(function(e,n){for(var i,o=r(e,t),a=o.length;a--;)i=Z.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:i(function(e){var t=[],n=[],r=S(e.replace(at,"$1"));return r[P]?i(function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:i(function(e){return function(t){return a(e,t).length>0}}),contains:i(function(e){return function(t){return(t.textContent||t.innerText||k(t)).indexOf(e)>-1}}),lang:i(function(e){return ft.test(e||"")||a.error("unsupported lang: "+e),e=e.replace(xt,Tt).toLowerCase(),function(t){var n;do if(n=M?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===H},focus:function(e){return e===L.activeElement&&(!L.hasFocus||L.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!C.pseudos.empty(e)},header:function(e){return yt.test(e.nodeName)},input:function(e){return mt.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:c(function(e,t,n){for(var r=0>n?n+t:n;t>++r;)e.push(r);return e})}};for(w in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})C.pseudos[w]=u(w);for(w in{submit:!0,reset:!0})C.pseudos[w]=l(w);S=a.compile=function(e,t){var n,r=[],i=[],o=U[e+" "];if(!o){for(t||(t=f(e)),n=t.length;n--;)o=y(t[n]),o[P]?r.push(o):i.push(o);o=U(e,v(i,r))}return o},C.pseudos.nth=C.pseudos.eq,C.filters=T.prototype=C.pseudos,C.setFilters=new T,D(),a.attr=st.attr,st.find=a,st.expr=a.selectors,st.expr[":"]=st.expr.pseudos,st.unique=a.uniqueSort,st.text=a.getText,st.isXMLDoc=a.isXML,st.contains=a.contains}(e);var Pt=/Until$/,Rt=/^(?:parents|prev(?:Until|All))/,Wt=/^.[^:#\[\.,]*$/,$t=st.expr.match.needsContext,It={children:!0,contents:!0,next:!0,prev:!0};st.fn.extend({find:function(e){var t,n,r;if("string"!=typeof e)return r=this,this.pushStack(st(e).filter(function(){for(t=0;r.length>t;t++)if(st.contains(r[t],this))return!0}));for(n=[],t=0;this.length>t;t++)st.find(e,this[t],n);return n=this.pushStack(st.unique(n)),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=st(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(st.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(f(this,e,!1))},filter:function(e){return this.pushStack(f(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?$t.test(e)?st(e,this.context).index(this[0])>=0:st.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){for(var n,r=0,i=this.length,o=[],a=$t.test(e)||"string"!=typeof e?st(e,t||this.context):0;i>r;r++)for(n=this[r];n&&n.ownerDocument&&n!==t&&11!==n.nodeType;){if(a?a.index(n)>-1:st.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}return this.pushStack(o.length>1?st.unique(o):o)},index:function(e){return e?"string"==typeof e?st.inArray(this[0],st(e)):st.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?st(e,t):st.makeArray(e&&e.nodeType?[e]:e),r=st.merge(this.get(),n);return this.pushStack(st.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),st.fn.andSelf=st.fn.addBack,st.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return st.dir(e,"parentNode")},parentsUntil:function(e,t,n){return st.dir(e,"parentNode",n)},next:function(e){return c(e,"nextSibling")},prev:function(e){return c(e,"previousSibling")
-},nextAll:function(e){return st.dir(e,"nextSibling")},prevAll:function(e){return st.dir(e,"previousSibling")},nextUntil:function(e,t,n){return st.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return st.dir(e,"previousSibling",n)},siblings:function(e){return st.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return st.sibling(e.firstChild)},contents:function(e){return st.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:st.merge([],e.childNodes)}},function(e,t){st.fn[e]=function(n,r){var i=st.map(this,t,n);return Pt.test(e)||(r=n),r&&"string"==typeof r&&(i=st.filter(r,i)),i=this.length>1&&!It[e]?st.unique(i):i,this.length>1&&Rt.test(e)&&(i=i.reverse()),this.pushStack(i)}}),st.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?st.find.matchesSelector(t[0],e)?[t[0]]:[]:st.find.matches(e,t)},dir:function(e,n,r){for(var i=[],o=e[n];o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!st(o).is(r));)1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});var zt="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",Xt=/ jQuery\d+="(?:null|\d+)"/g,Ut=RegExp("<(?:"+zt+")[\\s/>]","i"),Vt=/^\s+/,Yt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Jt=/<([\w:]+)/,Gt=/\s*$/g,on={option:[1,""," "],legend:[1,""," "],area:[1,""," "],param:[1,""," "],thead:[1,""],tr:[2,""],col:[2,""],td:[3,""],_default:st.support.htmlSerialize?[0,"",""]:[1,"X","
"]},an=p(V),sn=an.appendChild(V.createElement("div"));on.optgroup=on.option,on.tbody=on.tfoot=on.colgroup=on.caption=on.thead,on.th=on.td,st.fn.extend({text:function(e){return st.access(this,function(e){return e===t?st.text(this):this.empty().append((this[0]&&this[0].ownerDocument||V).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(st.isFunction(e))return this.each(function(t){st(this).wrapAll(e.call(this,t))});if(this[0]){var t=st(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return st.isFunction(e)?this.each(function(t){st(this).wrapInner(e.call(this,t))}):this.each(function(){var t=st(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=st.isFunction(e);return this.each(function(n){st(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){st.nodeName(this,"body")||st(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){for(var n,r=0;null!=(n=this[r]);r++)(!e||st.filter(e,[n]).length>0)&&(t||1!==n.nodeType||st.cleanData(b(n)),n.parentNode&&(t&&st.contains(n.ownerDocument,n)&&m(b(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&st.cleanData(b(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&st.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return st.clone(this,e,t)})},html:function(e){return st.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(Xt,""):t;if(!("string"!=typeof e||Kt.test(e)||!st.support.htmlSerialize&&Ut.test(e)||!st.support.leadingWhitespace&&Vt.test(e)||on[(Jt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(Yt,"<$1>$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(st.cleanData(b(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=st.isFunction(e);return t||"string"==typeof e||(e=st(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;(n&&1===this.nodeType||11===this.nodeType)&&(st(this).remove(),t?t.parentNode.insertBefore(e,t):n.appendChild(e))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=et.apply([],e);var i,o,a,s,u,l,c=0,f=this.length,p=this,m=f-1,y=e[0],v=st.isFunction(y);if(v||!(1>=f||"string"!=typeof y||st.support.checkClone)&&en.test(y))return this.each(function(i){var o=p.eq(i);v&&(e[0]=y.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(f&&(i=st.buildFragment(e,this[0].ownerDocument,!1,this),o=i.firstChild,1===i.childNodes.length&&(i=o),o)){for(n=n&&st.nodeName(o,"tr"),a=st.map(b(i,"script"),h),s=a.length;f>c;c++)u=i,c!==m&&(u=st.clone(u,!0,!0),s&&st.merge(a,b(u,"script"))),r.call(n&&st.nodeName(this[c],"table")?d(this[c],"tbody"):this[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,st.map(a,g),c=0;s>c;c++)u=a[c],tn.test(u.type||"")&&!st._data(u,"globalEval")&&st.contains(l,u)&&(u.src?st.ajax({url:u.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):st.globalEval((u.text||u.textContent||u.innerHTML||"").replace(rn,"")));i=o=null}return this}}),st.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){st.fn[e]=function(e){for(var n,r=0,i=[],o=st(e),a=o.length-1;a>=r;r++)n=r===a?this:this.clone(!0),st(o[r])[t](n),tt.apply(i,n.get());return this.pushStack(i)}}),st.extend({clone:function(e,t,n){var r,i,o,a,s,u=st.contains(e.ownerDocument,e);if(st.support.html5Clone||st.isXMLDoc(e)||!Ut.test("<"+e.nodeName+">")?s=e.cloneNode(!0):(sn.innerHTML=e.outerHTML,sn.removeChild(s=sn.firstChild)),!(st.support.noCloneEvent&&st.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||st.isXMLDoc(e)))for(r=b(s),i=b(e),a=0;null!=(o=i[a]);++a)r[a]&&v(o,r[a]);if(t)if(n)for(i=i||b(e),r=r||b(s),a=0;null!=(o=i[a]);a++)y(o,r[a]);else y(e,s);return r=b(s,"script"),r.length>0&&m(r,!u&&b(e,"script")),r=i=o=null,s},buildFragment:function(e,t,n,r){for(var i,o,a,s,u,l,c,f=e.length,d=p(t),h=[],g=0;f>g;g++)if(o=e[g],o||0===o)if("object"===st.type(o))st.merge(h,o.nodeType?[o]:o);else if(Qt.test(o)){for(s=s||d.appendChild(t.createElement("div")),a=(Jt.exec(o)||["",""])[1].toLowerCase(),u=on[a]||on._default,s.innerHTML=u[1]+o.replace(Yt,"<$1>$2>")+u[2],c=u[0];c--;)s=s.lastChild;if(!st.support.leadingWhitespace&&Vt.test(o)&&h.push(t.createTextNode(Vt.exec(o)[0])),!st.support.tbody)for(o="table"!==a||Gt.test(o)?""!==u[1]||Gt.test(o)?0:s:s.firstChild,c=o&&o.childNodes.length;c--;)st.nodeName(l=o.childNodes[c],"tbody")&&!l.childNodes.length&&o.removeChild(l);for(st.merge(h,s.childNodes),s.textContent="";s.firstChild;)s.removeChild(s.firstChild);s=d.lastChild}else h.push(t.createTextNode(o));for(s&&d.removeChild(s),st.support.appendChecked||st.grep(b(h,"input"),x),g=0;o=h[g++];)if((!r||-1===st.inArray(o,r))&&(i=st.contains(o.ownerDocument,o),s=b(d.appendChild(o),"script"),i&&m(s),n))for(c=0;o=s[c++];)tn.test(o.type||"")&&n.push(o);return s=null,d},cleanData:function(e,n){for(var r,i,o,a,s=0,u=st.expando,l=st.cache,c=st.support.deleteExpando,f=st.event.special;null!=(o=e[s]);s++)if((n||st.acceptData(o))&&(i=o[u],r=i&&l[i])){if(r.events)for(a in r.events)f[a]?st.event.remove(o,a):st.removeEvent(o,a,r.handle);l[i]&&(delete l[i],c?delete o[u]:o.removeAttribute!==t?o.removeAttribute(u):o[u]=null,K.push(i))}}});var un,ln,cn,fn=/alpha\([^)]*\)/i,pn=/opacity\s*=\s*([^)]*)/,dn=/^(top|right|bottom|left)$/,hn=/^(none|table(?!-c[ea]).+)/,gn=/^margin/,mn=RegExp("^("+ut+")(.*)$","i"),yn=RegExp("^("+ut+")(?!px)[a-z%]+$","i"),vn=RegExp("^([+-])=("+ut+")","i"),bn={BODY:"block"},xn={position:"absolute",visibility:"hidden",display:"block"},Tn={letterSpacing:0,fontWeight:400},wn=["Top","Right","Bottom","Left"],Nn=["Webkit","O","Moz","ms"];st.fn.extend({css:function(e,n){return st.access(this,function(e,n,r){var i,o,a={},s=0;if(st.isArray(n)){for(i=ln(e),o=n.length;o>s;s++)a[n[s]]=st.css(e,n[s],!1,i);return a}return r!==t?st.style(e,n,r):st.css(e,n)},e,n,arguments.length>1)},show:function(){return N(this,!0)},hide:function(){return N(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:w(this))?st(this).show():st(this).hide()})}}),st.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=un(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":st.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=st.camelCase(n),l=e.style;if(n=st.cssProps[u]||(st.cssProps[u]=T(l,u)),s=st.cssHooks[n]||st.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=vn.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(st.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||st.cssNumber[u]||(r+="px"),st.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=st.camelCase(n);return n=st.cssProps[u]||(st.cssProps[u]=T(e.style,u)),s=st.cssHooks[n]||st.cssHooks[u],s&&"get"in s&&(o=s.get(e,!0,r)),o===t&&(o=un(e,n,i)),"normal"===o&&n in Tn&&(o=Tn[n]),r?(a=parseFloat(o),r===!0||st.isNumeric(a)?a||0:o):o},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(ln=function(t){return e.getComputedStyle(t,null)},un=function(e,n,r){var i,o,a,s=r||ln(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||st.contains(e.ownerDocument,e)||(u=st.style(e,n)),yn.test(u)&&gn.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):V.documentElement.currentStyle&&(ln=function(e){return e.currentStyle},un=function(e,n,r){var i,o,a,s=r||ln(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),yn.test(u)&&!dn.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u}),st.each(["height","width"],function(e,n){st.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&hn.test(st.css(e,"display"))?st.swap(e,xn,function(){return E(e,n,i)}):E(e,n,i):t},set:function(e,t,r){var i=r&&ln(e);return C(e,t,r?k(e,n,r,st.support.boxSizing&&"border-box"===st.css(e,"boxSizing",!1,i),i):0)}}}),st.support.opacity||(st.cssHooks.opacity={get:function(e,t){return pn.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=st.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===st.trim(o.replace(fn,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=fn.test(o)?o.replace(fn,i):o+" "+i)}}),st(function(){st.support.reliableMarginRight||(st.cssHooks.marginRight={get:function(e,n){return n?st.swap(e,{display:"inline-block"},un,[e,"marginRight"]):t}}),!st.support.pixelPosition&&st.fn.position&&st.each(["top","left"],function(e,n){st.cssHooks[n]={get:function(e,r){return r?(r=un(e,n),yn.test(r)?st(e).position()[n]+"px":r):t}}})}),st.expr&&st.expr.filters&&(st.expr.filters.hidden=function(e){return 0===e.offsetWidth&&0===e.offsetHeight||!st.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||st.css(e,"display"))},st.expr.filters.visible=function(e){return!st.expr.filters.hidden(e)}),st.each({margin:"",padding:"",border:"Width"},function(e,t){st.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];4>r;r++)i[e+wn[r]+t]=o[r]||o[r-2]||o[0];return i}},gn.test(e)||(st.cssHooks[e+t].set=C)});var Cn=/%20/g,kn=/\[\]$/,En=/\r?\n/g,Sn=/^(?:submit|button|image|reset)$/i,An=/^(?:input|select|textarea|keygen)/i;st.fn.extend({serialize:function(){return st.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=st.prop(this,"elements");return e?st.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!st(this).is(":disabled")&&An.test(this.nodeName)&&!Sn.test(e)&&(this.checked||!Zt.test(e))}).map(function(e,t){var n=st(this).val();return null==n?null:st.isArray(n)?st.map(n,function(e){return{name:t.name,value:e.replace(En,"\r\n")}}):{name:t.name,value:n.replace(En,"\r\n")}}).get()}}),st.param=function(e,n){var r,i=[],o=function(e,t){t=st.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=st.ajaxSettings&&st.ajaxSettings.traditional),st.isArray(e)||e.jquery&&!st.isPlainObject(e))st.each(e,function(){o(this.name,this.value)});else for(r in e)j(r,e[r],n,o);return i.join("&").replace(Cn,"+")};var jn,Dn,Ln=st.now(),Hn=/\?/,Mn=/#.*$/,qn=/([?&])_=[^&]*/,_n=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Fn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,On=/^(?:GET|HEAD)$/,Bn=/^\/\//,Pn=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Rn=st.fn.load,Wn={},$n={},In="*/".concat("*");try{Dn=Y.href}catch(zn){Dn=V.createElement("a"),Dn.href="",Dn=Dn.href}jn=Pn.exec(Dn.toLowerCase())||[],st.fn.load=function(e,n,r){if("string"!=typeof e&&Rn)return Rn.apply(this,arguments);var i,o,a,s=this,u=e.indexOf(" ");return u>=0&&(i=e.slice(u,e.length),e=e.slice(0,u)),st.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(o="POST"),s.length>0&&st.ajax({url:e,type:o,dataType:"html",data:n}).done(function(e){a=arguments,s.html(i?st("").append(st.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,a||[e.responseText,t,e])}),this},st.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){st.fn[t]=function(e){return this.on(t,e)}}),st.each(["get","post"],function(e,n){st[n]=function(e,r,i,o){return st.isFunction(r)&&(o=o||i,i=r,r=t),st.ajax({url:e,type:n,dataType:o,data:r,success:i})}}),st.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Dn,type:"GET",isLocal:Fn.test(jn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":In,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":st.parseJSON,"text xml":st.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?H(H(e,st.ajaxSettings),t):H(st.ajaxSettings,e)},ajaxPrefilter:D(Wn),ajaxTransport:D($n),ajax:function(e,n){function r(e,n,r,s){var l,f,v,b,T,N=n;2!==x&&(x=2,u&&clearTimeout(u),i=t,a=s||"",w.readyState=e>0?4:0,r&&(b=M(p,w,r)),e>=200&&300>e||304===e?(p.ifModified&&(T=w.getResponseHeader("Last-Modified"),T&&(st.lastModified[o]=T),T=w.getResponseHeader("etag"),T&&(st.etag[o]=T)),304===e?(l=!0,N="notmodified"):(l=q(p,b),N=l.state,f=l.data,v=l.error,l=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),w.status=e,w.statusText=(n||N)+"",l?g.resolveWith(d,[f,N,w]):g.rejectWith(d,[w,N,v]),w.statusCode(y),y=t,c&&h.trigger(l?"ajaxSuccess":"ajaxError",[w,p,l?f:v]),m.fireWith(d,[w,N]),c&&(h.trigger("ajaxComplete",[w,p]),--st.active||st.event.trigger("ajaxStop")))}"object"==typeof e&&(n=e,e=t),n=n||{};var i,o,a,s,u,l,c,f,p=st.ajaxSetup({},n),d=p.context||p,h=p.context&&(d.nodeType||d.jquery)?st(d):st.event,g=st.Deferred(),m=st.Callbacks("once memory"),y=p.statusCode||{},v={},b={},x=0,T="canceled",w={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!s)for(s={};t=_n.exec(a);)s[t[1].toLowerCase()]=t[2];t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=b[n]=b[n]||e,v[e]=t),this},overrideMimeType:function(e){return x||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)y[t]=[y[t],e[t]];else w.always(e[w.status]);return this},abort:function(e){var t=e||T;return i&&i.abort(t),r(0,t),this}};if(g.promise(w).complete=m.add,w.success=w.done,w.error=w.fail,p.url=((e||p.url||Dn)+"").replace(Mn,"").replace(Bn,jn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=st.trim(p.dataType||"*").toLowerCase().match(lt)||[""],null==p.crossDomain&&(l=Pn.exec(p.url.toLowerCase()),p.crossDomain=!(!l||l[1]===jn[1]&&l[2]===jn[2]&&(l[3]||("http:"===l[1]?80:443))==(jn[3]||("http:"===jn[1]?80:443)))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=st.param(p.data,p.traditional)),L(Wn,p,n,w),2===x)return w;c=p.global,c&&0===st.active++&&st.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!On.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(Hn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=qn.test(o)?o.replace(qn,"$1_="+Ln++):o+(Hn.test(o)?"&":"?")+"_="+Ln++)),p.ifModified&&(st.lastModified[o]&&w.setRequestHeader("If-Modified-Since",st.lastModified[o]),st.etag[o]&&w.setRequestHeader("If-None-Match",st.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&w.setRequestHeader("Content-Type",p.contentType),w.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+In+"; q=0.01":""):p.accepts["*"]);for(f in p.headers)w.setRequestHeader(f,p.headers[f]);if(p.beforeSend&&(p.beforeSend.call(d,w,p)===!1||2===x))return w.abort();T="abort";for(f in{success:1,error:1,complete:1})w[f](p[f]);if(i=L($n,p,n,w)){w.readyState=1,c&&h.trigger("ajaxSend",[w,p]),p.async&&p.timeout>0&&(u=setTimeout(function(){w.abort("timeout")},p.timeout));try{x=1,i.send(v,r)}catch(N){if(!(2>x))throw N;r(-1,N)}}else r(-1,"No Transport");return w},getScript:function(e,n){return st.get(e,t,n,"script")},getJSON:function(e,t,n){return st.get(e,t,n,"json")}}),st.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return st.globalEval(e),e}}}),st.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),st.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=V.head||st("head")[0]||V.documentElement;return{send:function(t,i){n=V.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Xn=[],Un=/(=)\?(?=&|$)|\?\?/;st.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xn.pop()||st.expando+"_"+Ln++;return this[e]=!0,e}}),st.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,u=n.jsonp!==!1&&(Un.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Un.test(n.data)&&"data");return u||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=st.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,u?n[u]=n[u].replace(Un,"$1"+o):n.jsonp!==!1&&(n.url+=(Hn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||st.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Xn.push(o)),s&&st.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Vn,Yn,Jn=0,Gn=e.ActiveXObject&&function(){var e;for(e in Vn)Vn[e](t,!0)};st.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&_()||F()}:_,Yn=st.ajaxSettings.xhr(),st.support.cors=!!Yn&&"withCredentials"in Yn,Yn=st.support.ajax=!!Yn,Yn&&st.ajaxTransport(function(n){if(!n.crossDomain||st.support.cors){var r;return{send:function(i,o){var a,s,u=n.xhr();if(n.username?u.open(n.type,n.url,n.async,n.username,n.password):u.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)u[s]=n.xhrFields[s];n.mimeType&&u.overrideMimeType&&u.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)u.setRequestHeader(s,i[s])}catch(l){}u.send(n.hasContent&&n.data||null),r=function(e,i){var s,l,c,f,p;try{if(r&&(i||4===u.readyState))if(r=t,a&&(u.onreadystatechange=st.noop,Gn&&delete Vn[a]),i)4!==u.readyState&&u.abort();else{f={},s=u.status,p=u.responseXML,c=u.getAllResponseHeaders(),p&&p.documentElement&&(f.xml=p),"string"==typeof u.responseText&&(f.text=u.responseText);try{l=u.statusText}catch(d){l=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=f.text?200:404}}catch(h){i||o(-1,h)}f&&o(s,l,f,c)},n.async?4===u.readyState?setTimeout(r):(a=++Jn,Gn&&(Vn||(Vn={},st(e).unload(Gn)),Vn[a]=r),u.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Qn,Kn,Zn=/^(?:toggle|show|hide)$/,er=RegExp("^(?:([+-])=|)("+ut+")([a-z%]*)$","i"),tr=/queueHooks$/,nr=[W],rr={"*":[function(e,t){var n,r,i=this.createTween(e,t),o=er.exec(t),a=i.cur(),s=+a||0,u=1,l=20;if(o){if(n=+o[2],r=o[3]||(st.cssNumber[e]?"":"px"),"px"!==r&&s){s=st.css(i.elem,e,!0)||n||1;do u=u||".5",s/=u,st.style(i.elem,e,s+r);while(u!==(u=i.cur()/a)&&1!==u&&--l)}i.unit=r,i.start=s,i.end=o[1]?s+(o[1]+1)*n:n}return i}]};st.Animation=st.extend(P,{tweener:function(e,t){st.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");for(var n,r=0,i=e.length;i>r;r++)n=e[r],rr[n]=rr[n]||[],rr[n].unshift(t)},prefilter:function(e,t){t?nr.unshift(e):nr.push(e)}}),st.Tween=$,$.prototype={constructor:$,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(st.cssNumber[n]?"":"px")},cur:function(){var e=$.propHooks[this.prop];return e&&e.get?e.get(this):$.propHooks._default.get(this)},run:function(e){var t,n=$.propHooks[this.prop];return this.pos=t=this.options.duration?st.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):$.propHooks._default.set(this),this}},$.prototype.init.prototype=$.prototype,$.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=st.css(e.elem,e.prop,"auto"),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){st.fx.step[e.prop]?st.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[st.cssProps[e.prop]]||st.cssHooks[e.prop])?st.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},$.propHooks.scrollTop=$.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},st.each(["toggle","show","hide"],function(e,t){var n=st.fn[t];st.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(I(t,!0),e,r,i)}}),st.fn.extend({fadeTo:function(e,t,n,r){return this.filter(w).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=st.isEmptyObject(e),o=st.speed(t,n,r),a=function(){var t=P(this,st.extend({},e),o);a.finish=function(){t.stop(!0)},(i||st._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=st.timers,a=st._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&tr.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&st.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=st._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=st.timers,a=r?r.length:0;for(n.finish=!0,st.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),st.each({slideDown:I("show"),slideUp:I("hide"),slideToggle:I("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){st.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),st.speed=function(e,t,n){var r=e&&"object"==typeof e?st.extend({},e):{complete:n||!n&&t||st.isFunction(e)&&e,duration:e,easing:n&&t||t&&!st.isFunction(t)&&t};return r.duration=st.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in st.fx.speeds?st.fx.speeds[r.duration]:st.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){st.isFunction(r.old)&&r.old.call(this),r.queue&&st.dequeue(this,r.queue)},r},st.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},st.timers=[],st.fx=$.prototype.init,st.fx.tick=function(){var e,n=st.timers,r=0;for(Qn=st.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||st.fx.stop(),Qn=t},st.fx.timer=function(e){e()&&st.timers.push(e)&&st.fx.start()},st.fx.interval=13,st.fx.start=function(){Kn||(Kn=setInterval(st.fx.tick,st.fx.interval))},st.fx.stop=function(){clearInterval(Kn),Kn=null},st.fx.speeds={slow:600,fast:200,_default:400},st.fx.step={},st.expr&&st.expr.filters&&(st.expr.filters.animated=function(e){return st.grep(st.timers,function(t){return e===t.elem}).length}),st.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){st.offset.setOffset(this,e,t)});var n,r,i={top:0,left:0},o=this[0],a=o&&o.ownerDocument;if(a)return n=a.documentElement,st.contains(n,o)?(o.getBoundingClientRect!==t&&(i=o.getBoundingClientRect()),r=z(a),{top:i.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:i.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):i},st.offset={setOffset:function(e,t,n){var r=st.css(e,"position");"static"===r&&(e.style.position="relative");var i,o,a=st(e),s=a.offset(),u=st.css(e,"top"),l=st.css(e,"left"),c=("absolute"===r||"fixed"===r)&&st.inArray("auto",[u,l])>-1,f={},p={};c?(p=a.position(),i=p.top,o=p.left):(i=parseFloat(u)||0,o=parseFloat(l)||0),st.isFunction(t)&&(t=t.call(e,n,s)),null!=t.top&&(f.top=t.top-s.top+i),null!=t.left&&(f.left=t.left-s.left+o),"using"in t?t.using.call(e,f):a.css(f)}},st.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===st.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),st.nodeName(e[0],"html")||(n=e.offset()),n.top+=st.css(e[0],"borderTopWidth",!0),n.left+=st.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-st.css(r,"marginTop",!0),left:t.left-n.left-st.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent||V.documentElement;e&&!st.nodeName(e,"html")&&"static"===st.css(e,"position");)e=e.offsetParent;return e||V.documentElement})}}),st.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);st.fn[e]=function(i){return st.access(this,function(e,i,o){var a=z(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?st(a).scrollLeft():o,r?o:st(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}}),st.each({Height:"height",Width:"width"},function(e,n){st.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){st.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return st.access(this,function(n,r,i){var o;return st.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?st.css(n,r,s):st.style(n,r,i,s)},n,a?i:t,a,null)}})}),e.jQuery=e.$=st,"function"==typeof define&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return st})})(window);
-//@ sourceMappingURL=jquery.min.map
\ No newline at end of file
diff --git a/padrino/notejam/public/favicon.ico b/padrino/notejam/public/favicon.ico
deleted file mode 100644
index 4e26b1989..000000000
Binary files a/padrino/notejam/public/favicon.ico and /dev/null differ
diff --git a/padrino/notejam/public/stylesheets/style.css b/padrino/notejam/public/stylesheets/style.css
deleted file mode 100644
index 86cd131ff..000000000
--- a/padrino/notejam/public/stylesheets/style.css
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
-* Skeleton V1.0.3
-* Copyright 2011, Dave Gamache
-* www.getskeleton.com
-* Free to use under the MIT license.
-* http://www.opensource.org/licenses/mit-license.php
-* 7/17/2011
-*/
-
-
-/* Documentation Styles
-================================================== */
- div.container {
- padding-top: 40px; }
-
- /* Doc nav */
- nav {
- width: 160px; }
- #logo, .bold-header {
- margin-bottom: 30px;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- letter-spacing: -1px;
- color: #555;
- font-weight: bold; }
- .bold-header span {
- font-weight: normal;
- font-size: 23px;
- }
- .bold-header a.header {
- text-decoration: none;
- color: inherit;
- }
- .bold-header span.jam {
- font-size: 46px;
- line-height: 50px;
- }
- nav ul {
- float: left; }
- nav ul li {
- display: block;
- margin-bottom: 10px; }
- nav ul li a,
- nav ul li a:visited,
- nav ul li a:active {
- font-size: 14px;
- color: #555;
- text-decoration: none;
- font-weight: bold; }
- nav ul li a:hover,
- nav ul li a:focus {
- color: #222; }
- header h1 {
- font-size: 52px;
- line-height: 61px;
- letter-spacing: -1px;
- font-weight: normal;
- font-family: "Georgia", "Times New Roman", Helvetica, Arial, sans-serif; }
- hr.large {
- border: none;
- height: 8px;
- background: #ebebeb;
- margin: 50px 0; }
- div.doc-section {
- margin: 30px 0; }
-
- #whatAndWhy .row {
- padding: 30px 0 0; }
-
- #typography blockquote {
- margin-top: 20px; }
-
- .hidden-code a {
- font-size: 12px;
- color: #999; }
- .hidden-code>div {
- display: none; }
-
-
- /* Grid */
- #grid .column,
- #grid .columns {
- background: #ddd;
- height: 25px;
- line-height: 25px;
- margin-bottom: 10px;
- text-align: center;
- text-transform: uppercase;
- color: #555;
- font-size: 12px;
- font-weight: bold;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px; }
- #grid .column:hover,
- #grid .columns:hover {
- background: #bbb;
- color: #333; }
- #grid .example-grid { overflow: hidden; }
-
- .post-button-note,
- .post-button-note a {
- font-size: 11px;
- color: #999; }
-
- #examples .four.columns a {
- text-decoration: none;
- }
- #examples .four.columns a:hover {
- text-decoration: underline;
- }
-
-
- .resize {
- position: fixed;
- bottom: 0;
- right: 0;
- height: 80px;
- width: 80px;
- background: url(images/resize.png); }
-
-
- img {
- max-width: 100%;
- height: auto; }
-
- .gist-meta { display: none !important;}
-
- ul ul ul li { margin-bottom: 3px; }
-
- .twitter-share-button { margin-bottom: -18px; }
-
- /* Table stylesheets */
- table {
- width: 100%;
- border-collapse: collapse;
- }
-
- table th, table td {
- padding: 10px 10px 9px;
- font-size: 13px;
- line-height: 18px;
- text-align: left;
- }
-
- table td {
- vertical-align: top;
- border-top: solid 1px #ddd;
- }
-
- table th {
- padding-top: 9px;
- font-weight: bold;
- vertical-align: middle;
- }
-
- table.condensed th, table.condensed td {
- padding: 5px 5px 4px;
- }
-
- table.bordered {
- border-collapse: separate;
- border: solid 1px #ddd;
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
- }
-
- table.bordered th + th,
- table.bordered th + td,
- table.bordered td + td {
- border-left: solid 1px #ddd;
- }
-
- .zebra-striped tbody tr:nth-child(odd) td,
- .zebra-striped tbody tr:nth-child(odd) th {
- background: #f5f5f5;
- }
-
-.carbonad,
-.carbonad-image,
-.carbonad-text,
-.carbonad-tag {
- background: none !important;
- border: none !important;
- margin-left: 0 !important;
-}
-.carbonad-tag {
- margin-top: 6px !important;
- padding-top: 0 !important;
-}
-.carbonad-text {
- height: auto !important;
-}
-.carbonad-image {
- margin-top: 0 !important;
-}
-
-.hidden-text {
- font-size: 12px;
- color: #999;
-}
-
-td.date, th.date {
- text-align: right;
-}
-
-td.date {
- font-style: italic;
-}
-
-form.note input[type="text"], form.note textarea {
- width: 100%;
-}
-
-form hr {
- width: 218px;
- margin: 10px 0px;
-}
-
-form.note textarea {
- height: 250px;
-}
-
-div.content-area {
- min-height: 600px;
-}
-
-hr.footer {
- margin-bottom: 10px;
-}
-
-div.footer {
- margin-bottom: 10px;
- text-align: center;
- font-size: 12px;
-}
-
-form.sign-in {
- margin: 50px 0 0 0;
-}
-
-.sort_arrow {
- text-decoration: none;
-}
-
-.sort_arrow:hover {
- text-decoration: none;
- color: red;
-}
-
-div.sign-in-out-block {
- position: absolute;
- right: 14px;
- top: 8px;
- font-size: 12px;
-}
-
-div.sign-in-out-block a {
- /*text-decoration: none;*/
-}
-
-a.small-red {
- color: red;
- font-size: 12px;
-}
-
-table.notes {
- margin: 0 0 20px 0;
-}
-
-table.notes th.note {
- width: 72%;
-}
-
-table.notes td.pad {
- color: grey;
-}
-
-table.notes td.pad a {
- color: grey;
- text-decoration: underline;
- font-style: normal;
-}
-
-
-table.notes td.pad a:hover {
- color: black;
-}
-
-p.empty {
- color: grey;
- font-style: italic;
-}
-
-a.delete-note {
- float: right;
- font-size: 12px;
- color: red;
-}
-
-.red, input.red {
- color: red !important;
-}
-
-ul.errorlist, ul.errors {
- margin: -18px 0 0 0;
-}
-
-ul.errorlist li, ul.errors li {
- color: red;
-}
-
-.alert-area {
- text-align: center;
-}
-
-.alert {
- padding: 5px 8px;
- margin: 0 0 12px 0;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
-}
-
-.alert-success {
- color: #468847;
- background-color: #dff0d8;
- border: 1px solid #d6e9c6;
-}
-
-.alert-error {
- color: #b94a48;
- background-color: #f2dede;
- border: 1px solid #eed3d7;
-}
-
- /* Mobile */
- @media only screen and (max-width: 767px) {
- header h1 { font-size: 34px; line-height: 37px; }
- nav { position: relative; }
- nav ul,
- .carbonad {
- display: none;
- }
- #logo { text-align: left; }
- #examples .four.columns {
- padding-top: 30px;
- }
- }
-
- /* Mobile Landscape */
- @media only screen and (min-width: 480px) and (max-width: 767px) {
- nav ul {
- display: none;
- }
- }
-
- /* Non 960 */
- @media only screen and (max-width: 959px) {
- #logo {
- font-size: 21px;
- margin-bottom: 15px; }
- nav .button {
- padding: 9px 20px 11px; }
- }
-
- /* iPad Portrait/Browser */
- @media only screen and (min-width: 768px) and (max-width: 959px) {
- nav {
- width: 124px; }
- }
-
- /* Mobile/Browser */
- @media only screen and (max-width: 767px) {}
-
- /* Mobile Landscape/Browser */
- @media only screen and (min-width: 480px) and (max-width: 767px) {}
-
- /* Anything smaller than standard 960 */
- @media only screen and (max-width: 959px) {}
-
-
- /* iPad Portrait Only */
- @media only screen and (min-width: 768px) and (max-width: 959px) and (max-device-width: 1000px) {}
-
- /* Mobile Only */
- @media only screen and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Mobile Landscape Only */
- @media only screen and (min-width: 480px) and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Anything smaller than standard 960 on a device */
- @media only screen and (max-width: 959px) and (max-device-width: 1000px) {
- .resize { display: none; }
- }
diff --git a/padrino/notejam/spec/app/controllers/note_controller_spec.rb b/padrino/notejam/spec/app/controllers/note_controller_spec.rb
deleted file mode 100644
index a508ba810..000000000
--- a/padrino/notejam/spec/app/controllers/note_controller_spec.rb
+++ /dev/null
@@ -1,174 +0,0 @@
-require 'spec_helper'
-
-describe "NoteController" do
-
- def pad_data
- {
- "name" => "Pad"
- }
- end
-
- def note_data
- {
- "name" => "Note",
- "text" => "Note text",
- "pad_id" => "0"
- }
- end
-
- def user_data
- {
- "email" => "user@example.com",
- "password" => "secure_password",
- "password_confirmation" => "secure_password",
- }
- end
-
- # How to enable testing sessions?
- # http://snippets.aktagon.com/snippets/332-testing-sessions-with-sinatra-and-rack-test
- # Silly workaround:
- def login_user(user_data)
- user = User.create(user_data)
- post "/signin", {
- "email" => user_data['email'],
- "password" => user_data['password']
- }
- user
- end
-
- it "requires to be signed in to create a note" do
- post "/notes/create", {
- "note" => note_data,
- }
- last_response.should be_redirect
- follow_redirect!
- last_request.url.should include("/signin")
- end
-
- it "creates a note successfully" do
- login_user user_data
- post "/notes/create", {
- "note" => note_data
- }
-
- expect(Note.count).to eq(1)
- end
-
- it "requires mandatory fields to create a note" do
- login_user user_data
- post "/notes/create", {
- "note" => {
- "name" => "",
- "text" => "",
- "pad_id" => "0"
- }
- }
- last_response.body.should include("Name must not be blank")
- last_response.body.should include("Text must not be blank")
- end
-
- it "edits a note successfully" do
- user = User.create(user_data)
- note = Note.create({name: "Old name", text: "Text", user: user})
- login_user user_data
- post "/notes/#{note.id}/edit", {
- "note" => note_data
- }
- expect(Note.get(note.id).name).to eq(note_data['name'])
- end
-
- it "requires mandatory fields to edit a note" do
- user = User.create(user_data)
- note = Note.create({name: "Old name", text: "Text", user: user})
- login_user user_data
- post "/notes/#{note.id}/edit", {
- "note" => {
- "name" => "",
- "text" => "",
- "pad_id" => 0
- }
- }
- last_response.body.should include("Name must not be blank")
- last_response.body.should include("Text must not be blank")
- end
-
- it "doens't allow to edit a note pad by not an owner" do
- owner = User.create(user_data)
- note = Note.create({name: "Old name", text: "Text", user: owner})
-
- data = user_data
- data['email'] = 'another_user@example.com'
- another_user = User.create(data)
-
- login_user data
- post "/notes/#{note.id}/edit", {
- "note" => note_data
- }
- expect(last_response.status).to eq(404)
- end
-
- it "views a note successfully" do
- user = User.create(user_data)
- note = Note.create({name: "Note", text: "Text", user: user})
- login_user user_data
-
- get "/notes/#{note.id}"
- expect(last_response.status).to eq(200)
- end
-
- it "doesn't allow to view a note by not an owner" do
- owner = User.create(user_data)
- note = Note.create({name: "Old name", text: "Text", user: owner})
-
- data = user_data
- data['email'] = 'another_user@example.com'
- another_user = User.create(data)
-
- login_user data
- get "/notes/#{note.id}/"
- expect(last_response.status).to eq(404)
- end
-
- it "deletes pad successfully" do
- user = User.create(user_data)
- note = Note.create({name: "Note", text: "Text", user: user})
- login_user user_data
- post "/notes/#{note.id}/delete"
- expect(Note.count).to eq(0)
- end
-
- it "doesn't allow to delete pad by not an owner" do
- owner = User.create(user_data)
- note = Note.create({name: "Name", text: "Text", user: owner})
-
- data = user_data
- data['email'] = 'another_user@example.com'
- another_user = User.create(data)
-
- login_user data
- post "/notes/#{note.id}/delete"
- expect(last_response.status).to eq(404)
- end
-
- it "doesn't allow to create a note in another's user pad" do
- owner = User.create(user_data)
- pad = Pad.create({name: "Pad", user: owner})
-
- data = user_data
- data['email'] = 'another_user@example.com'
- another_user = User.create(data)
-
- login_user data
- post "/notes/create", {
- "note" => {
- "name" => "Note",
- "text" => "Text",
- "pad_id" => pad.id
- }
- }
- expect(last_response.status).to eq(404)
- end
-end
-
-
-
diff --git a/padrino/notejam/spec/app/controllers/pad_controller_spec.rb b/padrino/notejam/spec/app/controllers/pad_controller_spec.rb
deleted file mode 100644
index ad6c32037..000000000
--- a/padrino/notejam/spec/app/controllers/pad_controller_spec.rb
+++ /dev/null
@@ -1,140 +0,0 @@
-require 'spec_helper'
-
-describe "PadController" do
-
- def pad_data
- {
- "name" => "Pad"
- }
- end
-
- def user_data
- {
- "email" => "user@example.com",
- "password" => "secure_password",
- "password_confirmation" => "secure_password",
- }
- end
-
- # How to enable testing sessions?
- # http://snippets.aktagon.com/snippets/332-testing-sessions-with-sinatra-and-rack-test
- # Silly workaround:
- def login_user(user_data)
- user = User.create(user_data)
- post "/signin", {
- "email" => user_data['email'],
- "password" => user_data['password']
- }
- user
- end
-
- it "requires to be signed in to create pad" do
- post "/pads/create", {
- "pad" => pad_data,
- }
- last_response.should be_redirect
- follow_redirect!
- last_request.url.should include("/signin")
- end
-
- it "creates pad successfully" do
- login_user user_data
- post "/pads/create", {
- "pad" => pad_data
- }
-
- expect(Pad.count).to eq(1)
- end
-
- it "requires mandatory fields to create pad" do
- login_user user_data
- post "/pads/create", {
- "pad" => {
- "name" => ""
- }
- }
- last_response.body.should include("Name must not be blank")
- end
-
- it "edits pad successfully" do
- user = User.create(user_data)
- pad = Pad.create({name: "Initial name", user: user})
- login_user user_data
- post "/pads/#{pad.id}/edit", {
- "pad" => pad_data
- }
- expect(Pad.get(pad.id).name).to eq(pad_data['name'])
- end
-
- it "requires mandatory fields to edit pad" do
- user = User.create(user_data)
- pad = Pad.create({name: "Initial name", user: user})
- login_user user_data
- post "/pads/#{pad.id}/edit", {
- "pad" => {
- "name" => ""
- }
- }
- last_response.body.should include("Name must not be blank")
- end
-
- it "doens't allow to edit pad by not an owner" do
- owner = User.create(user_data)
- pad = Pad.create({name: "Initial name", user: owner})
-
- data = user_data
- data['email'] = 'another_user@example.com'
- another_user = User.create(data)
-
- login_user data
- post "/pads/#{pad.id}/edit", {
- "pad" => pad_data
- }
- expect(last_response.status).to eq(404)
- end
-
- it "views pad successfully" do
- user = User.create(user_data)
- pad = Pad.create({name: "Pad", user: user})
- login_user user_data
-
- get "/pads/#{pad.id}"
- expect(last_response.status).to eq(200)
- end
-
- it "doesn't allow to view pad by not an owner" do
- owner = User.create(user_data)
- pad = Pad.create({name: "Pad", user: owner})
-
- data = user_data
- data['email'] = 'another_user@example.com'
- another_user = User.create(data)
-
- login_user data
- get "/pads/#{pad.id}"
- expect(last_response.status).to eq(404)
- end
-
- it "deletes pad successfully" do
- user = User.create(user_data)
- pad = Pad.create({name: "Pad", user: user})
- login_user user_data
- post "/pads/#{pad.id}/delete"
- expect(Pad.count).to eq(0)
- end
-
- it "doesn't allow to delete pad by not an owner" do
- owner = User.create(user_data)
- pad = Pad.create({name: "Pad", user: owner})
-
- data = user_data
- data['email'] = 'another_user@example.com'
- another_user = User.create(data)
-
- login_user data
- post "/pads/#{pad.id}/delete"
- expect(last_response.status).to eq(404)
- end
-end
-
-
diff --git a/padrino/notejam/spec/app/controllers/user_controller_spec.rb b/padrino/notejam/spec/app/controllers/user_controller_spec.rb
deleted file mode 100644
index 121e2a097..000000000
--- a/padrino/notejam/spec/app/controllers/user_controller_spec.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-require 'spec_helper'
-
-describe "UserController" do
-
- def user_data
- {
- "email" => "user@example.com",
- "password" => "secure_password",
- "password_confirmation" => "secure_password",
- }
- end
-
-
- it "successfully signs up" do
- post "/signup", {
- "user" => user_data
- }
- last_response.should be_redirect
- follow_redirect!
- last_request.url.should include("/signin")
-
- expect(User.count).to eq(1)
- end
-
- it "requires mandatory fields to sign up" do
- post "/signup", {
- "user" => {
- "email" => "",
- "password" => "",
- "password_confirmation" => "",
- }
- }
- last_response.body.should include("Email must not be blank")
- last_response.body.should include("Password must not be blank")
- last_response.body.should include(
- "Password confirmation must not be blank"
- )
- end
-
- it "requires passwords to match" do
- data = user_data
- data['password_confirmation'] = "wrong"
-
- post "/signup", {
- "user" => data
- }
- last_response.body.should include(
- "Password does not match the confirmation"
- )
- end
-
- it "doesn't sign up if email is taken" do
- user = User.create(user_data)
- post "/signup", {
- "user" => user_data
- }
- last_response.body.should include("Email is already taken")
- end
-
- it "successfully signs in" do
- user = User.create(user_data)
- post "/signin", {
- "email" => user_data['email'],
- "password" => user_data['password']
- }
- last_response.should be_redirect
- follow_redirect!
- last_request.url.should include("/")
- end
-
- it "requires correct credentials to sign in" do
- user = User.create(user_data)
- post "/signin", {
- "email" => user_data['email'],
- "password" => "wrong password"
- }
- last_response.body.should include("Wrong email or password")
- end
-end
diff --git a/padrino/notejam/spec/spec.rake b/padrino/notejam/spec/spec.rake
deleted file mode 100644
index 3028e7f0a..000000000
--- a/padrino/notejam/spec/spec.rake
+++ /dev/null
@@ -1,20 +0,0 @@
-begin
- require 'rspec/core/rake_task'
-
- spec_tasks = Dir['spec/*/'].inject([]) do |result, d|
- result << File.basename(d) unless Dir["#{d}*"].empty?
- result
- end
-
- spec_tasks.each do |folder|
- RSpec::Core::RakeTask.new("spec:#{folder}") do |t|
- t.pattern = "./spec/#{folder}/**/*_spec.rb"
- t.rspec_opts = %w(-fs --color)
- end
- end
-
- desc "Run complete application spec suite"
- task 'spec' => spec_tasks.map { |f| "spec:#{f}" }
-rescue LoadError
- puts "RSpec is not part of this bundle, skip specs."
-end
diff --git a/padrino/notejam/spec/spec_helper.rb b/padrino/notejam/spec/spec_helper.rb
deleted file mode 100644
index 5b5619755..000000000
--- a/padrino/notejam/spec/spec_helper.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-RACK_ENV = 'test' unless defined?(RACK_ENV)
-require File.expand_path(File.dirname(__FILE__) + "/../config/boot")
-
-RSpec.configure do |conf|
- conf.include Rack::Test::Methods
-
- conf.before(:each) do
- DatabaseCleaner.strategy = :transaction
- DatabaseCleaner.clean_with(:truncation)
- end
-end
-
-# You can use this method to custom specify a Rack app
-# you want rack-test to invoke:
-#
-# app Notejam::App
-# app Notejam::App.tap { |a| }
-# app(Notejam::App) do
-# set :foo, :bar
-# end
-#
-def app(app = nil, &blk)
- @app ||= block_given? ? app.instance_eval(&blk) : app
- @app ||= Padrino.application
-end
-
-module Rack
- module Test
- class Session
- alias_method :old_env_for, :env_for
- def rack_session
- @rack_session ||= {}
- end
- def rack_session=(hash)
- @rack_session = hash
- end
- def env_for(path, env)
- old_env_for(path, env).merge({'rack.session' => rack_session})
- end
- end
- end
-end
diff --git a/spring/pom.xml b/pom.xml
similarity index 92%
rename from spring/pom.xml
rename to pom.xml
index 8c64669bf..0a15d4827 100644
--- a/spring/pom.xml
+++ b/pom.xml
@@ -18,6 +18,10 @@
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
org.springframework.boot
spring-boot-starter-thymeleaf
@@ -41,6 +45,12 @@
org.hsqldb
hsqldb
+ test
+
+
+ mysql
+ mysql-connector-java
+ 8.0.11
runtime
diff --git a/pyramid/CHANGES.txt b/pyramid/CHANGES.txt
deleted file mode 100644
index 35a34f332..000000000
--- a/pyramid/CHANGES.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-0.0
----
-
-- Initial version
diff --git a/pyramid/MANIFEST.in b/pyramid/MANIFEST.in
deleted file mode 100644
index 9bd308fe7..000000000
--- a/pyramid/MANIFEST.in
+++ /dev/null
@@ -1,2 +0,0 @@
-include *.txt *.ini *.cfg *.rst
-recursive-include notejam *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml
diff --git a/pyramid/README.rst b/pyramid/README.rst
deleted file mode 100644
index 407c6c92b..000000000
--- a/pyramid/README.rst
+++ /dev/null
@@ -1,81 +0,0 @@
-****************
-Notejam: Pyramid
-****************
-
-Notejam application implemented using `Pyramid `_ framework.
-
-Pyramid version: 1.5
-
-==========================
-Installation and launching
-==========================
-
------
-Clone
------
-
-Clone the repo:
-
-.. code-block:: bash
-
- $ git clone git@github.com:komarserjio/notejam.git YOUR_PROJECT_DIR/
-
--------
-Install
--------
-
-Use `virtualenv `_ or `virtualenvwrapper `_
-for `environment management `_.
-
-Install dependencies:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/pyramid/
- $ python setup.py develop
-
-Create database schema:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/pyramid/
- $ initialize_notejam_db development.ini
-
-------
-Launch
-------
-
-Start pyramid web server:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/pyramid/
- $ pserve development.ini --reload
-
-Go to http://127.0.0.1:6543/ in your browser
-
----------
-Run tests
----------
-
-Run functional and unit tests:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/pyramid/
- $ python setup.py test
-
-============
-Contribution
-============
-
-Do you have python/pyramid experience? Help the app to follow python and pyramid best practices.
-
-Please send your pull requests in the ``master`` branch.
-Always prepend your commits with framework name:
-
-.. code-block:: bash
-
- Pyramid: Implemented sign in functionality
-
-Read `contribution guide `_ for details.
diff --git a/pyramid/README.txt b/pyramid/README.txt
deleted file mode 100644
index 515ec964a..000000000
--- a/pyramid/README.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-notejam README
-==================
-
-Getting Started
----------------
-
-- cd
-
-- $venv/bin/python setup.py develop
-
-- $venv/bin/initialize_notejam_db development.ini
-
-- $venv/bin/pserve development.ini
-
diff --git a/pyramid/development.ini b/pyramid/development.ini
deleted file mode 100644
index 0749971f4..000000000
--- a/pyramid/development.ini
+++ /dev/null
@@ -1,75 +0,0 @@
-###
-# app configuration
-# http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html
-###
-
-[app:main]
-use = egg:notejam
-
-pyramid.reload_templates = true
-pyramid.debug_authorization = false
-pyramid.debug_notfound = false
-pyramid.debug_routematch = false
-pyramid.default_locale_name = en
-pyramid.includes =
- pyramid_debugtoolbar
- pyramid_tm
- pyramid_mailer
-
-session.secret = notejam_secret_key
-
-
-sqlalchemy.url = sqlite:///%(here)s/notejam.db
-
-# By default, the toolbar only appears for clients from IP addresses
-# '127.0.0.1' and '::1'.
-# debugtoolbar.hosts = 127.0.0.1 ::1
-
-###
-# wsgi server configuration
-###
-
-[server:main]
-use = egg:waitress#main
-host = 0.0.0.0
-port = 6543
-
-###
-# logging configuration
-# http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/logging.html
-###
-
-[loggers]
-keys = root, notejam, sqlalchemy
-
-[handlers]
-keys = console
-
-[formatters]
-keys = generic
-
-[logger_root]
-level = INFO
-handlers = console
-
-[logger_notejam]
-level = DEBUG
-handlers =
-qualname = notejam
-
-[logger_sqlalchemy]
-level = INFO
-handlers =
-qualname = sqlalchemy.engine
-# "level = INFO" logs SQL queries.
-# "level = DEBUG" logs SQL queries and results.
-# "level = WARN" logs neither. (Recommended for production systems.)
-
-[handler_console]
-class = StreamHandler
-args = (sys.stderr,)
-level = NOTSET
-formatter = generic
-
-[formatter_generic]
-format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s
diff --git a/pyramid/notejam/__init__.py b/pyramid/notejam/__init__.py
deleted file mode 100644
index 9ccc073ca..000000000
--- a/pyramid/notejam/__init__.py
+++ /dev/null
@@ -1,56 +0,0 @@
-from pyramid.config import Configurator
-from pyramid.authentication import SessionAuthenticationPolicy
-from pyramid.authorization import ACLAuthorizationPolicy
-from pyramid.session import UnencryptedCookieSessionFactoryConfig
-
-from sqlalchemy import engine_from_config
-
-from .models import (
- DBSession,
- Base,
- RootFactory
- )
-
-
-def main(global_config, **settings):
- """ This function returns a Pyramid WSGI application.
- """
- engine = engine_from_config(settings, 'sqlalchemy.')
- DBSession.configure(bind=engine)
-
- session_factory = UnencryptedCookieSessionFactoryConfig(
- settings['session.secret']
- )
-
- authn_policy = SessionAuthenticationPolicy()
- authz_policy = ACLAuthorizationPolicy()
-
- Base.metadata.bind = engine
- config = Configurator(
- settings=settings,
- root_factory=RootFactory,
- authentication_policy=authn_policy,
- authorization_policy=authz_policy,
- session_factory=session_factory
- )
- config.include('pyramid_chameleon')
- config.add_static_view('static', 'static', cache_max_age=3600)
- # routes
- config.add_route('notes', '/')
- config.add_route('create_note', '/notes/create/')
- config.add_route('view_note', '/notes/{note_id}/')
- config.add_route('update_note', '/notes/{note_id}/edit/')
- config.add_route('delete_note', '/notes/{note_id}/delete/')
-
- config.add_route('signin', '/signin/')
- config.add_route('signout', '/signout/')
- config.add_route('signup', '/signup/')
- config.add_route('forgot_password', '/forgot-password/')
- config.add_route('settings', '/settings/')
-
- config.add_route('create_pad', '/pads/create/')
- config.add_route('pad_notes', '/pads/{pad_id}/')
- config.add_route('update_pad', '/pads/{pad_id}/edit/')
- config.add_route('delete_pad', '/pads/{pad_id}/delete/')
- config.scan()
- return config.make_wsgi_app()
diff --git a/pyramid/notejam/forms.py b/pyramid/notejam/forms.py
deleted file mode 100644
index 312831b32..000000000
--- a/pyramid/notejam/forms.py
+++ /dev/null
@@ -1,91 +0,0 @@
-from formencode import Schema, validators, FancyValidator, All, Invalid
-
-from models import DBSession, User
-
-
-class UniqueEmail(FancyValidator):
- def to_python(self, value, state):
- if DBSession.query(User).filter(User.email == value).count():
- raise Invalid(
- 'That email already exists', value, state
- )
- return value
-
-
-class EmailExists(FancyValidator):
- def to_python(self, value, state):
- if not DBSession.query(User).filter(User.email == value).count():
- raise Invalid(
- 'That email doesnt exist', value, state
- )
- return value
-
-
-class PasswordCorrect(FancyValidator):
- def to_python(self, value, state):
- if not state.user.check_password(value):
- raise Invalid(
- 'Current password is not correct', value, state
- )
- return value
-
-
-class OneOfPad(FancyValidator):
- def to_python(self, value, state):
- value = int(value)
- if value != 0 and value not in [p.id for p in state.user.pads.all()]:
- raise Invalid(
- 'Selected pad is not correct', value, state
- )
- return value
-
-
-class SignupSchema(Schema):
- allow_extra_fields = True
- filter_extra_fields = True
-
- email = All(UniqueEmail(), validators.Email(not_empty=True))
- password = validators.UnicodeString(min=6)
- confirm_password = validators.UnicodeString(min=6)
- chained_validators = [
- validators.FieldsMatch('password', 'confirm_password')
- ]
-
-
-class SigninSchema(Schema):
- allow_extra_fields = True
- filter_extra_fields = True
-
- email = validators.Email(not_empty=True)
- password = validators.UnicodeString(min=6)
-
-
-class PadSchema(Schema):
- allow_extra_fields = True
-
- name = validators.UnicodeString(not_empty=True)
-
-
-class NoteSchema(Schema):
- allow_extra_fields = True
-
- name = validators.UnicodeString(not_empty=True)
- text = validators.UnicodeString(not_empty=True)
- pad_id = OneOfPad()
-
-
-class ForgotPasswordSchema(Schema):
- allow_extra_fields = False
-
- email = All(EmailExists(), validators.Email(not_empty=True))
-
-
-class ChangePasswordSchema(Schema):
- allow_extra_fields = False
-
- old_password = All(PasswordCorrect(), validators.UnicodeString(min=6))
- password = validators.UnicodeString(min=6)
- confirm_password = validators.UnicodeString(min=6)
- passwords_match = [
- validators.FieldsMatch('password', 'confirm_password')
- ]
diff --git a/pyramid/notejam/models.py b/pyramid/notejam/models.py
deleted file mode 100644
index a431e782a..000000000
--- a/pyramid/notejam/models.py
+++ /dev/null
@@ -1,106 +0,0 @@
-import datetime
-import cryptacular.bcrypt
-
-from sqlalchemy import Column, Integer, String, Text, ForeignKey, DateTime
-
-from sqlalchemy.ext.declarative import declarative_base
-
-from sqlalchemy.orm import (scoped_session, sessionmaker, synonym, relation,
-backref)
-
-from zope.sqlalchemy import ZopeTransactionExtension
-
-from pyramid.security import Authenticated, Allow
-
-DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
-Base = declarative_base()
-
-crypt = cryptacular.bcrypt.BCRYPTPasswordManager()
-
-
-def hash_password(password):
- return unicode(crypt.encode(password))
-
-
-class TimestampMixin(object):
- created_at = Column(DateTime, default=datetime.datetime.now())
- updated_at = Column(
- DateTime, default=datetime.datetime.now(),
- onupdate=datetime.datetime.now()
- )
-
-
-class User(Base):
- __tablename__ = 'users'
- id = Column(Integer, primary_key=True)
- email = Column(String(120), unique=True)
- _password = Column(String(36))
-
- def _set_password(self, password):
- self._password = hash_password(password)
-
- def _get_password(self):
- return self._password
-
- password = synonym(
- '_password', descriptor=property(_get_password, _set_password)
- )
-
- def __repr__(self):
- return ''.format(self.email)
-
- def check_password(self, password):
- return crypt.check(self.password, password)
-
-
-class Pad(TimestampMixin, Base):
- __tablename__ = 'pads'
- id = Column(Integer, primary_key=True)
- name = Column(String(100))
-
- user_id = Column(Integer, ForeignKey('users.id'))
- user = relation(
- 'User',
- backref=backref('pads', lazy='dynamic', cascade='all')
- )
-
- def __repr__(self):
- return '' % self.name
-
- def __str__(self):
- return self.name
-
-
-class Note(TimestampMixin, Base):
- __tablename__ = 'notes'
- id = Column(Integer, primary_key=True)
- name = Column(String(100))
- text = Column(Text())
-
- user_id = Column(Integer, ForeignKey('users.id'))
- user = relation(
- 'User',
- backref=backref('notes', lazy='dynamic', cascade='all')
- )
-
- pad_id = Column(Integer, ForeignKey('pads.id'))
- pad = relation(
- 'Pad',
- backref=backref('notes', lazy='dynamic', cascade='all')
- )
-
- def __repr__(self):
- return '' % self.name
-
- def __str__(self):
- return self.name
-
-
-# acl configuration
-class RootFactory(object):
- __acl__ = [
- (Allow, Authenticated, 'login_required')
- ]
-
- def __init__(self, request):
- pass # pragma: no cover
diff --git a/pyramid/notejam/scripts/__init__.py b/pyramid/notejam/scripts/__init__.py
deleted file mode 100644
index 5bb534f79..000000000
--- a/pyramid/notejam/scripts/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# package
diff --git a/pyramid/notejam/scripts/initializedb.py b/pyramid/notejam/scripts/initializedb.py
deleted file mode 100644
index 129698ba7..000000000
--- a/pyramid/notejam/scripts/initializedb.py
+++ /dev/null
@@ -1,32 +0,0 @@
-import os
-import sys
-
-from sqlalchemy import engine_from_config
-
-from pyramid.paster import (
- get_appsettings,
- setup_logging,
- )
-
-from ..models import (
- DBSession,
- Base,
- )
-
-
-def usage(argv):
- cmd = os.path.basename(argv[0])
- print('usage: %s \n'
- '(example: "%s development.ini")' % (cmd, cmd))
- sys.exit(1)
-
-
-def main(argv=sys.argv):
- if len(argv) != 2:
- usage(argv)
- config_uri = argv[1]
- setup_logging(config_uri)
- settings = get_appsettings(config_uri)
- engine = engine_from_config(settings, 'sqlalchemy.')
- DBSession.configure(bind=engine)
- Base.metadata.create_all(engine)
diff --git a/pyramid/notejam/static/css/base.css b/pyramid/notejam/static/css/base.css
deleted file mode 100644
index 9ae027089..000000000
--- a/pyramid/notejam/static/css/base.css
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
-* Skeleton V1.2
-* Copyright 2011, Dave Gamache
-* www.getskeleton.com
-* Free to use under the MIT license.
-* http://www.opensource.org/licenses/mit-license.php
-* 6/20/2012
-*/
-
-
-/* Table of Content
-==================================================
- #Reset & Basics
- #Basic Styles
- #Site Styles
- #Typography
- #Links
- #Lists
- #Images
- #Buttons
- #Forms
- #Misc */
-
-
-/* #Reset & Basics (Inspired by E. Meyers)
-================================================== */
- html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
- margin: 0;
- padding: 0;
- border: 0;
- font-size: 100%;
- font: inherit;
- vertical-align: baseline; }
- article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
- display: block; }
- body {
- line-height: 1; }
- ol, ul {
- list-style: none; }
- blockquote, q {
- quotes: none; }
- blockquote:before, blockquote:after,
- q:before, q:after {
- content: '';
- content: none; }
- table {
- border-collapse: collapse;
- border-spacing: 0; }
-
-
-/* #Basic Styles
-================================================== */
- body {
- background: #fff;
- font: 14px/21px "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif;
- color: #444;
- -webkit-font-smoothing: antialiased; /* Fix for webkit rendering */
- -webkit-text-size-adjust: 100%;
- }
-
-
-/* #Typography
-================================================== */
- h1, h2, h3, h4, h5, h6 {
- color: #181818;
- font-family: "Georgia", "Times New Roman", serif;
- font-weight: normal; }
- h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { font-weight: inherit; }
- h1 { font-size: 46px; line-height: 50px; margin-bottom: 14px;}
- h2 { font-size: 35px; line-height: 40px; margin-bottom: 10px; }
- h3 { font-size: 28px; line-height: 34px; margin-bottom: 8px; }
- h4 { font-size: 21px; line-height: 30px; margin-bottom: 4px; }
- h5 { font-size: 17px; line-height: 24px; }
- h6 { font-size: 14px; line-height: 21px; }
- .subheader { color: #777; }
-
- p { margin: 0 0 20px 0; }
- p img { margin: 0; }
- p.lead { font-size: 21px; line-height: 27px; color: #777; }
-
- em { font-style: italic; }
- strong { font-weight: bold; color: #333; }
- small { font-size: 80%; }
-
-/* Blockquotes */
- blockquote, blockquote p { font-size: 17px; line-height: 24px; color: #777; font-style: italic; }
- blockquote { margin: 0 0 20px; padding: 9px 20px 0 19px; border-left: 1px solid #ddd; }
- blockquote cite { display: block; font-size: 12px; color: #555; }
- blockquote cite:before { content: "\2014 \0020"; }
- blockquote cite a, blockquote cite a:visited, blockquote cite a:visited { color: #555; }
-
- hr { border: solid #ddd; border-width: 1px 0 0; clear: both; margin: 10px 0 30px; height: 0; }
-
-
-/* #Links
-================================================== */
- a, a:visited { color: #333; text-decoration: underline; outline: 0; }
- a:hover, a:focus { color: #000; }
- p a, p a:visited { line-height: inherit; }
-
-
-/* #Lists
-================================================== */
- ul, ol { margin-bottom: 20px; }
- ul { list-style: none outside; }
- ol { list-style: decimal; }
- ol, ul.square, ul.circle, ul.disc { margin-left: 30px; }
- ul.square { list-style: square outside; }
- ul.circle { list-style: circle outside; }
- ul.disc { list-style: disc outside; }
- ul ul, ul ol,
- ol ol, ol ul { margin: 4px 0 5px 30px; font-size: 90%; }
- ul ul li, ul ol li,
- ol ol li, ol ul li { margin-bottom: 6px; }
- li { line-height: 18px; margin-bottom: 12px; }
- ul.large li { line-height: 21px; }
- li p { line-height: 21px; }
-
-/* #Images
-================================================== */
-
- img.scale-with-grid {
- max-width: 100%;
- height: auto; }
-
-
-/* #Buttons
-================================================== */
-
- .button,
- button,
- input[type="submit"],
- input[type="reset"],
- input[type="button"] {
- background: #eee; /* Old browsers */
- background: #eee -moz-linear-gradient(top, rgba(255,255,255,.2) 0%, rgba(0,0,0,.2) 100%); /* FF3.6+ */
- background: #eee -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.2)), color-stop(100%,rgba(0,0,0,.2))); /* Chrome,Safari4+ */
- background: #eee -webkit-linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* Chrome10+,Safari5.1+ */
- background: #eee -o-linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* Opera11.10+ */
- background: #eee -ms-linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* IE10+ */
- background: #eee linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* W3C */
- border: 1px solid #aaa;
- border-top: 1px solid #ccc;
- border-left: 1px solid #ccc;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
- border-radius: 3px;
- color: #444;
- display: inline-block;
- font-size: 11px;
- font-weight: bold;
- text-decoration: none;
- text-shadow: 0 1px rgba(255, 255, 255, .75);
- cursor: pointer;
- margin-bottom: 20px;
- line-height: normal;
- padding: 8px 10px;
- font-family: "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; }
-
- .button:hover,
- button:hover,
- input[type="submit"]:hover,
- input[type="reset"]:hover,
- input[type="button"]:hover {
- color: #222;
- background: #ddd; /* Old browsers */
- background: #ddd -moz-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); /* FF3.6+ */
- background: #ddd -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.3)), color-stop(100%,rgba(0,0,0,.3))); /* Chrome,Safari4+ */
- background: #ddd -webkit-linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* Chrome10+,Safari5.1+ */
- background: #ddd -o-linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* Opera11.10+ */
- background: #ddd -ms-linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* IE10+ */
- background: #ddd linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* W3C */
- border: 1px solid #888;
- border-top: 1px solid #aaa;
- border-left: 1px solid #aaa; }
-
- .button:active,
- button:active,
- input[type="submit"]:active,
- input[type="reset"]:active,
- input[type="button"]:active {
- border: 1px solid #666;
- background: #ccc; /* Old browsers */
- background: #ccc -moz-linear-gradient(top, rgba(255,255,255,.35) 0%, rgba(10,10,10,.4) 100%); /* FF3.6+ */
- background: #ccc -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.35)), color-stop(100%,rgba(10,10,10,.4))); /* Chrome,Safari4+ */
- background: #ccc -webkit-linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* Chrome10+,Safari5.1+ */
- background: #ccc -o-linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* Opera11.10+ */
- background: #ccc -ms-linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* IE10+ */
- background: #ccc linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* W3C */ }
-
- .button.full-width,
- button.full-width,
- input[type="submit"].full-width,
- input[type="reset"].full-width,
- input[type="button"].full-width {
- width: 100%;
- padding-left: 0 !important;
- padding-right: 0 !important;
- text-align: center; }
-
- /* Fix for odd Mozilla border & padding issues */
- button::-moz-focus-inner,
- input::-moz-focus-inner {
- border: 0;
- padding: 0;
- }
-
-
-/* #Forms
-================================================== */
-
- form {
- margin-bottom: 20px; }
- fieldset {
- margin-bottom: 20px; }
- input[type="text"],
- input[type="password"],
- input[type="email"],
- textarea,
- select {
- border: 1px solid #ccc;
- padding: 6px 4px;
- outline: none;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
- font: 13px "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif;
- color: #777;
- margin: 0;
- width: 210px;
- max-width: 100%;
- display: block;
- margin-bottom: 20px;
- background: #fff; }
- select {
- padding: 0; }
- input[type="text"]:focus,
- input[type="password"]:focus,
- input[type="email"]:focus,
- textarea:focus {
- border: 1px solid #aaa;
- color: #444;
- -moz-box-shadow: 0 0 3px rgba(0,0,0,.2);
- -webkit-box-shadow: 0 0 3px rgba(0,0,0,.2);
- box-shadow: 0 0 3px rgba(0,0,0,.2); }
- textarea {
- min-height: 60px; }
- label,
- legend {
- display: block;
- font-weight: bold;
- font-size: 13px; }
- select {
- width: 220px; }
- input[type="checkbox"] {
- display: inline; }
- label span,
- legend span {
- font-weight: normal;
- font-size: 13px;
- color: #444; }
-
-/* #Misc
-================================================== */
- .remove-bottom { margin-bottom: 0 !important; }
- .half-bottom { margin-bottom: 10px !important; }
- .add-bottom { margin-bottom: 20px !important; }
-
-
diff --git a/pyramid/notejam/static/css/layout.css b/pyramid/notejam/static/css/layout.css
deleted file mode 100644
index b99f45143..000000000
--- a/pyramid/notejam/static/css/layout.css
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-* Skeleton V1.2
-* Copyright 2011, Dave Gamache
-* www.getskeleton.com
-* Free to use under the MIT license.
-* http://www.opensource.org/licenses/mit-license.php
-* 6/20/2012
-*/
-
-/* Table of Content
-==================================================
- #Site Styles
- #Page Styles
- #Media Queries
- #Font-Face */
-
-/* #Site Styles
-================================================== */
-
-/* #Page Styles
-================================================== */
-
-/* #Media Queries
-================================================== */
-
- /* Smaller than standard 960 (devices and browsers) */
- @media only screen and (max-width: 959px) {}
-
- /* Tablet Portrait size to standard 960 (devices and browsers) */
- @media only screen and (min-width: 768px) and (max-width: 959px) {}
-
- /* All Mobile Sizes (devices and browser) */
- @media only screen and (max-width: 767px) {}
-
- /* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
- @media only screen and (min-width: 480px) and (max-width: 767px) {}
-
- /* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
- @media only screen and (max-width: 479px) {}
-
-
-/* #Font-Face
-================================================== */
-/* This is the proper syntax for an @font-face file
- Just create a "fonts" folder at the root,
- copy your FontName into code below and remove
- comment brackets */
-
-/* @font-face {
- font-family: 'FontName';
- src: url('../fonts/FontName.eot');
- src: url('../fonts/FontName.eot?iefix') format('eot'),
- url('../fonts/FontName.woff') format('woff'),
- url('../fonts/FontName.ttf') format('truetype'),
- url('../fonts/FontName.svg#webfontZam02nTh') format('svg');
- font-weight: normal;
- font-style: normal; }
-*/
\ No newline at end of file
diff --git a/pyramid/notejam/static/css/skeleton.css b/pyramid/notejam/static/css/skeleton.css
deleted file mode 100644
index 5db3d38ac..000000000
--- a/pyramid/notejam/static/css/skeleton.css
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
-* Skeleton V1.2
-* Copyright 2011, Dave Gamache
-* www.getskeleton.com
-* Free to use under the MIT license.
-* http://www.opensource.org/licenses/mit-license.php
-* 6/20/2012
-*/
-
-
-/* Table of Contents
-==================================================
- #Base 960 Grid
- #Tablet (Portrait)
- #Mobile (Portrait)
- #Mobile (Landscape)
- #Clearing */
-
-
-
-/* #Base 960 Grid
-================================================== */
-
- .container { position: relative; width: 960px; margin: 0 auto; padding: 0; }
- .container .column,
- .container .columns { float: left; display: inline; margin-left: 10px; margin-right: 10px; }
- .row { margin-bottom: 20px; }
-
- /* Nested Column Classes */
- .column.alpha, .columns.alpha { margin-left: 0; }
- .column.omega, .columns.omega { margin-right: 0; }
-
- /* Base Grid */
- .container .one.column,
- .container .one.columns { width: 40px; }
- .container .two.columns { width: 100px; }
- .container .three.columns { width: 160px; }
- .container .four.columns { width: 220px; }
- .container .five.columns { width: 280px; }
- .container .six.columns { width: 340px; }
- .container .seven.columns { width: 400px; }
- .container .eight.columns { width: 460px; }
- .container .nine.columns { width: 520px; }
- .container .ten.columns { width: 580px; }
- .container .eleven.columns { width: 640px; }
- .container .twelve.columns { width: 700px; }
- .container .thirteen.columns { width: 760px; }
- .container .fourteen.columns { width: 820px; }
- .container .fifteen.columns { width: 880px; }
- .container .sixteen.columns { width: 940px; }
-
- .container .one-third.column { width: 300px; }
- .container .two-thirds.column { width: 620px; }
-
- /* Offsets */
- .container .offset-by-one { padding-left: 60px; }
- .container .offset-by-two { padding-left: 120px; }
- .container .offset-by-three { padding-left: 180px; }
- .container .offset-by-four { padding-left: 240px; }
- .container .offset-by-five { padding-left: 300px; }
- .container .offset-by-six { padding-left: 360px; }
- .container .offset-by-seven { padding-left: 420px; }
- .container .offset-by-eight { padding-left: 480px; }
- .container .offset-by-nine { padding-left: 540px; }
- .container .offset-by-ten { padding-left: 600px; }
- .container .offset-by-eleven { padding-left: 660px; }
- .container .offset-by-twelve { padding-left: 720px; }
- .container .offset-by-thirteen { padding-left: 780px; }
- .container .offset-by-fourteen { padding-left: 840px; }
- .container .offset-by-fifteen { padding-left: 900px; }
-
-
-
-/* #Tablet (Portrait)
-================================================== */
-
- /* Note: Design for a width of 768px */
-
- @media only screen and (min-width: 768px) and (max-width: 959px) {
- .container { width: 768px; }
- .container .column,
- .container .columns { margin-left: 10px; margin-right: 10px; }
- .column.alpha, .columns.alpha { margin-left: 0; margin-right: 10px; }
- .column.omega, .columns.omega { margin-right: 0; margin-left: 10px; }
- .alpha.omega { margin-left: 0; margin-right: 0; }
-
- .container .one.column,
- .container .one.columns { width: 28px; }
- .container .two.columns { width: 76px; }
- .container .three.columns { width: 124px; }
- .container .four.columns { width: 172px; }
- .container .five.columns { width: 220px; }
- .container .six.columns { width: 268px; }
- .container .seven.columns { width: 316px; }
- .container .eight.columns { width: 364px; }
- .container .nine.columns { width: 412px; }
- .container .ten.columns { width: 460px; }
- .container .eleven.columns { width: 508px; }
- .container .twelve.columns { width: 556px; }
- .container .thirteen.columns { width: 604px; }
- .container .fourteen.columns { width: 652px; }
- .container .fifteen.columns { width: 700px; }
- .container .sixteen.columns { width: 748px; }
-
- .container .one-third.column { width: 236px; }
- .container .two-thirds.column { width: 492px; }
-
- /* Offsets */
- .container .offset-by-one { padding-left: 48px; }
- .container .offset-by-two { padding-left: 96px; }
- .container .offset-by-three { padding-left: 144px; }
- .container .offset-by-four { padding-left: 192px; }
- .container .offset-by-five { padding-left: 240px; }
- .container .offset-by-six { padding-left: 288px; }
- .container .offset-by-seven { padding-left: 336px; }
- .container .offset-by-eight { padding-left: 384px; }
- .container .offset-by-nine { padding-left: 432px; }
- .container .offset-by-ten { padding-left: 480px; }
- .container .offset-by-eleven { padding-left: 528px; }
- .container .offset-by-twelve { padding-left: 576px; }
- .container .offset-by-thirteen { padding-left: 624px; }
- .container .offset-by-fourteen { padding-left: 672px; }
- .container .offset-by-fifteen { padding-left: 720px; }
- }
-
-
-/* #Mobile (Portrait)
-================================================== */
-
- /* Note: Design for a width of 320px */
-
- @media only screen and (max-width: 767px) {
- .container { width: 300px; }
- .container .columns,
- .container .column { margin: 0; }
-
- .container .one.column,
- .container .one.columns,
- .container .two.columns,
- .container .three.columns,
- .container .four.columns,
- .container .five.columns,
- .container .six.columns,
- .container .seven.columns,
- .container .eight.columns,
- .container .nine.columns,
- .container .ten.columns,
- .container .eleven.columns,
- .container .twelve.columns,
- .container .thirteen.columns,
- .container .fourteen.columns,
- .container .fifteen.columns,
- .container .sixteen.columns,
- .container .one-third.column,
- .container .two-thirds.column { width: 300px; }
-
- /* Offsets */
- .container .offset-by-one,
- .container .offset-by-two,
- .container .offset-by-three,
- .container .offset-by-four,
- .container .offset-by-five,
- .container .offset-by-six,
- .container .offset-by-seven,
- .container .offset-by-eight,
- .container .offset-by-nine,
- .container .offset-by-ten,
- .container .offset-by-eleven,
- .container .offset-by-twelve,
- .container .offset-by-thirteen,
- .container .offset-by-fourteen,
- .container .offset-by-fifteen { padding-left: 0; }
-
- }
-
-
-/* #Mobile (Landscape)
-================================================== */
-
- /* Note: Design for a width of 480px */
-
- @media only screen and (min-width: 480px) and (max-width: 767px) {
- .container { width: 420px; }
- .container .columns,
- .container .column { margin: 0; }
-
- .container .one.column,
- .container .one.columns,
- .container .two.columns,
- .container .three.columns,
- .container .four.columns,
- .container .five.columns,
- .container .six.columns,
- .container .seven.columns,
- .container .eight.columns,
- .container .nine.columns,
- .container .ten.columns,
- .container .eleven.columns,
- .container .twelve.columns,
- .container .thirteen.columns,
- .container .fourteen.columns,
- .container .fifteen.columns,
- .container .sixteen.columns,
- .container .one-third.column,
- .container .two-thirds.column { width: 420px; }
- }
-
-
-/* #Clearing
-================================================== */
-
- /* Self Clearing Goodness */
- .container:after { content: "\0020"; display: block; height: 0; clear: both; visibility: hidden; }
-
- /* Use clearfix class on parent to clear nested columns,
- or wrap each row of columns in a */
- .clearfix:before,
- .clearfix:after,
- .row:before,
- .row:after {
- content: '\0020';
- display: block;
- overflow: hidden;
- visibility: hidden;
- width: 0;
- height: 0; }
- .row:after,
- .clearfix:after {
- clear: both; }
- .row,
- .clearfix {
- zoom: 1; }
-
- /* You can also use a
to clear columns */
- .clear {
- clear: both;
- display: block;
- overflow: hidden;
- visibility: hidden;
- width: 0;
- height: 0;
- }
diff --git a/pyramid/notejam/static/css/style.css b/pyramid/notejam/static/css/style.css
deleted file mode 100644
index e2aff1d75..000000000
--- a/pyramid/notejam/static/css/style.css
+++ /dev/null
@@ -1,350 +0,0 @@
-/*
-* Skeleton V1.0.3
-* Copyright 2011, Dave Gamache
-* www.getskeleton.com
-* Free to use under the MIT license.
-* http://www.opensource.org/licenses/mit-license.php
-* 7/17/2011
-*/
-
-
-/* Documentation Styles
-================================================== */
- div.container {
- padding-top: 40px; }
-
- /* Doc nav */
- nav {
- width: 160px; }
- #logo, .bold-header {
- margin-bottom: 30px;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- letter-spacing: -1px;
- color: #555;
- font-weight: bold; }
- .bold-header span {
- font-weight: normal;
- font-size: 23px;
- }
- .bold-header a.header {
- text-decoration: none;
- color: inherit;
- }
- .bold-header span.jam {
- font-size: 46px;
- line-height: 50px;
- }
- nav ul {
- float: left; }
- nav ul li {
- display: block;
- margin-bottom: 10px; }
- nav ul li a,
- nav ul li a:visited,
- nav ul li a:active {
- font-size: 14px;
- color: #555;
- text-decoration: none;
- font-weight: bold; }
- nav ul li a:hover,
- nav ul li a:focus {
- color: #222; }
- header h1 {
- font-size: 52px;
- line-height: 61px;
- letter-spacing: -1px;
- font-weight: normal;
- font-family: "Georgia", "Times New Roman", Helvetica, Arial, sans-serif; }
- hr.large {
- border: none;
- height: 8px;
- background: #ebebeb;
- margin: 50px 0; }
- div.doc-section {
- margin: 30px 0; }
-
- #whatAndWhy .row {
- padding: 30px 0 0; }
-
- #typography blockquote {
- margin-top: 20px; }
-
- .hidden-code a {
- font-size: 12px;
- color: #999; }
- .hidden-code>div {
- display: none; }
-
-
- /* Grid */
- #grid .column,
- #grid .columns {
- background: #ddd;
- height: 25px;
- line-height: 25px;
- margin-bottom: 10px;
- text-align: center;
- text-transform: uppercase;
- color: #555;
- font-size: 12px;
- font-weight: bold;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px; }
- #grid .column:hover,
- #grid .columns:hover {
- background: #bbb;
- color: #333; }
- #grid .example-grid { overflow: hidden; }
-
- .post-button-note,
- .post-button-note a {
- font-size: 11px;
- color: #999; }
-
- #examples .four.columns a {
- text-decoration: none;
- }
- #examples .four.columns a:hover {
- text-decoration: underline;
- }
-
-
- .resize {
- position: fixed;
- bottom: 0;
- right: 0;
- height: 80px;
- width: 80px;
- background: url(images/resize.png); }
-
-
- img {
- max-width: 100%;
- height: auto; }
-
- .gist-meta { display: none !important;}
-
- ul ul ul li { margin-bottom: 3px; }
-
- .twitter-share-button { margin-bottom: -18px; }
-
-.carbonad,
-.carbonad-image,
-.carbonad-text,
-.carbonad-tag {
- background: none !important;
- border: none !important;
- margin-left: 0 !important;
-}
-.carbonad-tag {
- margin-top: 6px !important;
- padding-top: 0 !important;
-}
-.carbonad-text {
- height: auto !important;
-}
-.carbonad-image {
- margin-top: 0 !important;
-}
-
-.hidden-text {
- font-size: 12px;
- color: #999;
-}
-
-td.date, th.date {
- text-align: right;
-}
-
-td.date {
- font-style: italic;
-}
-
-form.note input[type="text"], form.note textarea {
- width: 100%;
-}
-
-form hr {
- width: 218px;
- margin: 10px 0px;
-}
-
-form.note textarea {
- height: 250px;
-}
-
-div.content-area {
- min-height: 600px;
-}
-
-hr.footer {
- margin-bottom: 10px;
-}
-
-div.footer {
- margin-bottom: 10px;
- text-align: center;
- font-size: 12px;
-}
-
-form.sign-in {
- margin: 50px 0 0 0;
-}
-
-.sort_arrow {
- text-decoration: none;
-}
-
-.sort_arrow:hover {
- text-decoration: none;
- color: red;
-}
-
-div.sign-in-out-block {
- position: absolute;
- right: 14px;
- top: 8px;
- font-size: 12px;
-}
-
-div.sign-in-out-block a {
- /*text-decoration: none;*/
-}
-
-a.small-red {
- color: red;
- font-size: 12px;
-}
-
-table.notes {
- margin: 0 0 20px 0;
-}
-
-table.notes th.note {
- width: 72%;
-}
-
-table.notes td.pad {
- color: grey;
-}
-
-table.notes td.pad a {
- color: grey;
- text-decoration: underline;
- font-style: normal;
-}
-
-
-table.notes td.pad a:hover {
- color: black;
-}
-
-p.empty {
- color: grey;
- font-style: italic;
-}
-
-a.delete-note {
- float: right;
- font-size: 12px;
- color: red;
-}
-
-.red, input.red {
- color: red !important;
-}
-
-ul.errorlist, ul.errors, ul.error {
- margin: -18px 0 0 0;
-}
-
-ul.errorlist li, ul.errors li, ul.error li {
- color: red;
-}
-
-.alert-area {
- text-align: center;
-}
-
-.alert {
- padding: 5px 8px;
- margin: 0 0 12px 0;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
-}
-
-.alert-success {
- color: #468847;
- background-color: #dff0d8;
- border: 1px solid #d6e9c6;
-}
-
-.alert-error {
- color: #b94a48;
- background-color: #f2dede;
- border: 1px solid #eed3d7;
-}
-
- /* Mobile */
- @media only screen and (max-width: 767px) {
- header h1 { font-size: 34px; line-height: 37px; }
- nav { position: relative; }
- nav ul,
- .carbonad {
- display: none;
- }
- #logo { text-align: left; }
- #examples .four.columns {
- padding-top: 30px;
- }
- }
-
- /* Mobile Landscape */
- @media only screen and (min-width: 480px) and (max-width: 767px) {
- nav ul {
- display: none;
- }
- }
-
- /* Non 960 */
- @media only screen and (max-width: 959px) {
- #logo {
- font-size: 21px;
- margin-bottom: 15px; }
- nav .button {
- padding: 9px 20px 11px; }
- }
-
- /* iPad Portrait/Browser */
- @media only screen and (min-width: 768px) and (max-width: 959px) {
- nav {
- width: 124px; }
- }
-
- /* Mobile/Browser */
- @media only screen and (max-width: 767px) {}
-
- /* Mobile Landscape/Browser */
- @media only screen and (min-width: 480px) and (max-width: 767px) {}
-
- /* Anything smaller than standard 960 */
- @media only screen and (max-width: 959px) {}
-
-
- /* iPad Portrait Only */
- @media only screen and (min-width: 768px) and (max-width: 959px) and (max-device-width: 1000px) {}
-
- /* Mobile Only */
- @media only screen and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Mobile Landscape Only */
- @media only screen and (min-width: 480px) and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Anything smaller than standard 960 on a device */
- @media only screen and (max-width: 959px) and (max-device-width: 1000px) {
- .resize { display: none; }
- }
-
-
diff --git a/pyramid/notejam/static/css/tables.css b/pyramid/notejam/static/css/tables.css
deleted file mode 100644
index fb4441935..000000000
--- a/pyramid/notejam/static/css/tables.css
+++ /dev/null
@@ -1,45 +0,0 @@
-table {
- width: 100%;
- border-collapse: collapse;
-}
-
-table th, table td {
- padding: 10px 10px 9px;
- font-size: 13px;
- line-height: 18px;
- text-align: left;
-}
-
-table td {
- vertical-align: top;
- border-top: solid 1px #ddd;
-}
-
-table th {
- padding-top: 9px;
- font-weight: bold;
- vertical-align: middle;
-}
-
-table.condensed th, table.condensed td {
- padding: 5px 5px 4px;
-}
-
-table.bordered {
- border-collapse: separate;
- border: solid 1px #ddd;
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
-}
-
-table.bordered th + th,
-table.bordered th + td,
-table.bordered td + td {
- border-left: solid 1px #ddd;
-}
-
-.zebra-striped tbody tr:nth-child(odd) td,
-.zebra-striped tbody tr:nth-child(odd) th {
- background: #f5f5f5;
-}
diff --git a/pyramid/notejam/static/favicon.ico b/pyramid/notejam/static/favicon.ico
deleted file mode 100644
index 71f837c9e..000000000
Binary files a/pyramid/notejam/static/favicon.ico and /dev/null differ
diff --git a/pyramid/notejam/static/footerbg.png b/pyramid/notejam/static/footerbg.png
deleted file mode 100644
index 1fbc873da..000000000
Binary files a/pyramid/notejam/static/footerbg.png and /dev/null differ
diff --git a/pyramid/notejam/static/headerbg.png b/pyramid/notejam/static/headerbg.png
deleted file mode 100644
index 0596f2020..000000000
Binary files a/pyramid/notejam/static/headerbg.png and /dev/null differ
diff --git a/pyramid/notejam/static/ie6.css b/pyramid/notejam/static/ie6.css
deleted file mode 100644
index b7c8493d8..000000000
--- a/pyramid/notejam/static/ie6.css
+++ /dev/null
@@ -1,8 +0,0 @@
-* html img,
-* html .png{position:relative;behavior:expression((this.runtimeStyle.behavior="none")&&(this.pngSet?this.pngSet=true:(this.nodeName == "IMG" && this.src.toLowerCase().indexOf('.png')>-1?(this.runtimeStyle.backgroundImage = "none",
-this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.src + "',sizingMethod='image')",
-this.src = "static/transparent.gif"):(this.origBg = this.origBg? this.origBg :this.currentStyle.backgroundImage.toString().replace('url("','').replace('")',''),
-this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.origBg + "',sizingMethod='crop')",
-this.runtimeStyle.backgroundImage = "none")),this.pngSet=true)
-);}
-#wrap{display:table;height:100%}
diff --git a/pyramid/notejam/static/middlebg.png b/pyramid/notejam/static/middlebg.png
deleted file mode 100644
index 2369cfb7d..000000000
Binary files a/pyramid/notejam/static/middlebg.png and /dev/null differ
diff --git a/pyramid/notejam/static/pylons.css b/pyramid/notejam/static/pylons.css
deleted file mode 100644
index 4b1c017cd..000000000
--- a/pyramid/notejam/static/pylons.css
+++ /dev/null
@@ -1,372 +0,0 @@
-html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td
-{
- margin: 0;
- padding: 0;
- border: 0;
- outline: 0;
- font-size: 100%; /* 16px */
- vertical-align: baseline;
- background: transparent;
-}
-
-body
-{
- line-height: 1;
-}
-
-ol, ul
-{
- list-style: none;
-}
-
-blockquote, q
-{
- quotes: none;
-}
-
-blockquote:before, blockquote:after, q:before, q:after
-{
- content: '';
- content: none;
-}
-
-:focus
-{
- outline: 0;
-}
-
-ins
-{
- text-decoration: none;
-}
-
-del
-{
- text-decoration: line-through;
-}
-
-table
-{
- border-collapse: collapse;
- border-spacing: 0;
-}
-
-sub
-{
- vertical-align: sub;
- font-size: smaller;
- line-height: normal;
-}
-
-sup
-{
- vertical-align: super;
- font-size: smaller;
- line-height: normal;
-}
-
-ul, menu, dir
-{
- display: block;
- list-style-type: disc;
- margin: 1em 0;
- padding-left: 40px;
-}
-
-ol
-{
- display: block;
- list-style-type: decimal-leading-zero;
- margin: 1em 0;
- padding-left: 40px;
-}
-
-li
-{
- display: list-item;
-}
-
-ul ul, ul ol, ul dir, ul menu, ul dl, ol ul, ol ol, ol dir, ol menu, ol dl, dir ul, dir ol, dir dir, dir menu, dir dl, menu ul, menu ol, menu dir, menu menu, menu dl, dl ul, dl ol, dl dir, dl menu, dl dl
-{
- margin-top: 0;
- margin-bottom: 0;
-}
-
-ol ul, ul ul, menu ul, dir ul, ol menu, ul menu, menu menu, dir menu, ol dir, ul dir, menu dir, dir dir
-{
- list-style-type: circle;
-}
-
-ol ol ul, ol ul ul, ol menu ul, ol dir ul, ol ol menu, ol ul menu, ol menu menu, ol dir menu, ol ol dir, ol ul dir, ol menu dir, ol dir dir, ul ol ul, ul ul ul, ul menu ul, ul dir ul, ul ol menu, ul ul menu, ul menu menu, ul dir menu, ul ol dir, ul ul dir, ul menu dir, ul dir dir, menu ol ul, menu ul ul, menu menu ul, menu dir ul, menu ol menu, menu ul menu, menu menu menu, menu dir menu, menu ol dir, menu ul dir, menu menu dir, menu dir dir, dir ol ul, dir ul ul, dir menu ul, dir dir ul, dir ol menu, dir ul menu, dir menu menu, dir dir menu, dir ol dir, dir ul dir, dir menu dir, dir dir dir
-{
- list-style-type: square;
-}
-
-.hidden
-{
- display: none;
-}
-
-p
-{
- line-height: 1.5em;
-}
-
-h1
-{
- font-size: 1.75em;
- line-height: 1.7em;
- font-family: helvetica, verdana;
-}
-
-h2
-{
- font-size: 1.5em;
- line-height: 1.7em;
- font-family: helvetica, verdana;
-}
-
-h3
-{
- font-size: 1.25em;
- line-height: 1.7em;
- font-family: helvetica, verdana;
-}
-
-h4
-{
- font-size: 1em;
- line-height: 1.7em;
- font-family: helvetica, verdana;
-}
-
-html, body
-{
- width: 100%;
- height: 100%;
-}
-
-body
-{
- margin: 0;
- padding: 0;
- background-color: #fff;
- position: relative;
- font: 16px/24px NobileRegular, "Lucida Grande", Lucida, Verdana, sans-serif;
-}
-
-a
-{
- color: #1b61d6;
- text-decoration: none;
-}
-
-a:hover
-{
- color: #e88f00;
- text-decoration: underline;
-}
-
-body h1, body h2, body h3, body h4, body h5, body h6
-{
- font-family: NeutonRegular, "Lucida Grande", Lucida, Verdana, sans-serif;
- font-weight: 400;
- color: #373839;
- font-style: normal;
-}
-
-#wrap
-{
- min-height: 100%;
-}
-
-#header, #footer
-{
- width: 100%;
- color: #fff;
- height: 40px;
- position: absolute;
- text-align: center;
- line-height: 40px;
- overflow: hidden;
- font-size: 12px;
- vertical-align: middle;
-}
-
-#header
-{
- background: #000;
- top: 0;
- font-size: 14px;
-}
-
-#footer
-{
- bottom: 0;
- background: #000 url(footerbg.png) repeat-x 0 top;
- position: relative;
- margin-top: -40px;
- clear: both;
-}
-
-.header, .footer
-{
- width: 750px;
- margin-right: auto;
- margin-left: auto;
-}
-
-.wrapper
-{
- width: 100%;
-}
-
-#top, #top-small, #bottom
-{
- width: 100%;
-}
-
-#top
-{
- color: #000;
- height: 230px;
- background: #fff url(headerbg.png) repeat-x 0 top;
- position: relative;
-}
-
-#top-small
-{
- color: #000;
- height: 60px;
- background: #fff url(headerbg.png) repeat-x 0 top;
- position: relative;
-}
-
-#bottom
-{
- color: #222;
- background-color: #fff;
-}
-
-.top, .top-small, .middle, .bottom
-{
- width: 750px;
- margin-right: auto;
- margin-left: auto;
-}
-
-.top
-{
- padding-top: 40px;
-}
-
-.top-small
-{
- padding-top: 10px;
-}
-
-#middle
-{
- width: 100%;
- height: 100px;
- background: url(middlebg.png) repeat-x;
- border-top: 2px solid #fff;
- border-bottom: 2px solid #b2b2b2;
-}
-
-.app-welcome
-{
- margin-top: 25px;
-}
-
-.app-name
-{
- color: #000;
- font-weight: 700;
-}
-
-.bottom
-{
- padding-top: 50px;
-}
-
-#left
-{
- width: 350px;
- float: left;
- padding-right: 25px;
-}
-
-#right
-{
- width: 350px;
- float: right;
- padding-left: 25px;
-}
-
-.align-left
-{
- text-align: left;
-}
-
-.align-right
-{
- text-align: right;
-}
-
-.align-center
-{
- text-align: center;
-}
-
-ul.links
-{
- margin: 0;
- padding: 0;
-}
-
-ul.links li
-{
- list-style-type: none;
- font-size: 14px;
-}
-
-form
-{
- border-style: none;
-}
-
-fieldset
-{
- border-style: none;
-}
-
-input
-{
- color: #222;
- border: 1px solid #ccc;
- font-family: sans-serif;
- font-size: 12px;
- line-height: 16px;
-}
-
-input[type=text], input[type=password]
-{
- width: 205px;
-}
-
-input[type=submit]
-{
- background-color: #ddd;
- font-weight: 700;
-}
-
-/*Opera Fix*/
-body:before
-{
- content: "";
- height: 100%;
- float: left;
- width: 0;
- margin-top: -32767px;
-}
diff --git a/pyramid/notejam/static/pyramid-small.png b/pyramid/notejam/static/pyramid-small.png
deleted file mode 100644
index a5bc0ade7..000000000
Binary files a/pyramid/notejam/static/pyramid-small.png and /dev/null differ
diff --git a/pyramid/notejam/static/pyramid.png b/pyramid/notejam/static/pyramid.png
deleted file mode 100644
index 347e05549..000000000
Binary files a/pyramid/notejam/static/pyramid.png and /dev/null differ
diff --git a/pyramid/notejam/static/transparent.gif b/pyramid/notejam/static/transparent.gif
deleted file mode 100644
index 0341802e5..000000000
Binary files a/pyramid/notejam/static/transparent.gif and /dev/null differ
diff --git a/pyramid/notejam/templates/app_layout.pt b/pyramid/notejam/templates/app_layout.pt
deleted file mode 100644
index 2249ab81a..000000000
--- a/pyramid/notejam/templates/app_layout.pt
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/pyramid/notejam/templates/base.pt b/pyramid/notejam/templates/base.pt
deleted file mode 100644
index 5e3e7c90b..000000000
--- a/pyramid/notejam/templates/base.pt
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
My pads
-
-
- No pads
-
- New pad
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pyramid/notejam/templates/notes/create.pt b/pyramid/notejam/templates/notes/create.pt
deleted file mode 100644
index e894ed6df..000000000
--- a/pyramid/notejam/templates/notes/create.pt
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
- New note
-
-
- New note
-
-
-
-
-
-
-
diff --git a/pyramid/notejam/templates/notes/delete.pt b/pyramid/notejam/templates/notes/delete.pt
deleted file mode 100644
index 31c1b0cc1..000000000
--- a/pyramid/notejam/templates/notes/delete.pt
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
- ${note.name}
-
-
- ${note.name}
-
-
-
- Are you sure you want to delete ${note.name}?
-
-
- Cancel
-
-
-
-
-
diff --git a/pyramid/notejam/templates/notes/edit.pt b/pyramid/notejam/templates/notes/edit.pt
deleted file mode 100644
index 969959e59..000000000
--- a/pyramid/notejam/templates/notes/edit.pt
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
- ${note.name}
-
-
- ${note.name}
-
-
-
-
-
-
-
-
diff --git a/pyramid/notejam/templates/notes/list.pt b/pyramid/notejam/templates/notes/list.pt
deleted file mode 100644
index 984bd4862..000000000
--- a/pyramid/notejam/templates/notes/list.pt
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
- All notes (${len(notes)})
-
-
- All notes (${len(notes)})
-
-
-
-
- Create your first note.
- New note
-
-
-
diff --git a/pyramid/notejam/templates/notes/view.pt b/pyramid/notejam/templates/notes/view.pt
deleted file mode 100644
index 9339f5fb4..000000000
--- a/pyramid/notejam/templates/notes/view.pt
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
- ${note.name}
-
-
- ${note.name}
-
-
-
- Last edited at ${note.created_at.strftime('%d.%m.%Y')}
-
- ${note.text}
-
- Edit
- Delete it
-
-
-
-
diff --git a/pyramid/notejam/templates/pads/create.pt b/pyramid/notejam/templates/pads/create.pt
deleted file mode 100644
index dea316925..000000000
--- a/pyramid/notejam/templates/pads/create.pt
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
- New pad
-
-
- New pad
-
-
-
-
-
-
-
diff --git a/pyramid/notejam/templates/pads/delete.pt b/pyramid/notejam/templates/pads/delete.pt
deleted file mode 100644
index a170f4d41..000000000
--- a/pyramid/notejam/templates/pads/delete.pt
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
- ${pad.name}
-
-
- ${pad.name}
-
-
-
- Are you sure you want to delete ${pad.name}?
-
-
- Cancel
-
-
-
-
-
-
diff --git a/pyramid/notejam/templates/pads/edit.pt b/pyramid/notejam/templates/pads/edit.pt
deleted file mode 100644
index fce7eb241..000000000
--- a/pyramid/notejam/templates/pads/edit.pt
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
- ${pad.name}
-
-
- ${pad.name}
-
-
-
-
-
-
-
-
diff --git a/pyramid/notejam/templates/pads/note_list.pt b/pyramid/notejam/templates/pads/note_list.pt
deleted file mode 100644
index b6286465f..000000000
--- a/pyramid/notejam/templates/pads/note_list.pt
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
- ${pad} (${pad.notes.count()})
-
-
- ${pad} (${pad.notes.count()})
-
-
-
-
-
- Note ↓ ↑
- Last modified ↓ ↑
-
-
- ${note.name}
- ${note.created_at.strftime('%d.%m.%Y')}
-
-
- Create your first note in the pad.
- New note
- Pad settings
-
-
-
-
diff --git a/pyramid/notejam/templates/snippets.pt b/pyramid/notejam/templates/snippets.pt
deleted file mode 100644
index dd800c34b..000000000
--- a/pyramid/notejam/templates/snippets.pt
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
- Name
- ${renderer.text("name", size=30)}
- ${renderer.errorlist("name")}
- Note
- ${renderer.textarea("text")}
- ${renderer.errorlist("text")}
- Select Pad
- ${renderer.select("pad_id", [(0, "---------")] + [(p.id, p.name) for p in pads], request.params.get("pad"))}
- ${renderer.errorlist("pad_id")}
- Save
-
-
-
- Name
- ${renderer.text("name", size=30)}
- ${renderer.errorlist("name")}
- Save
- Delete it
-
-
-
diff --git a/pyramid/notejam/templates/user_layout.pt b/pyramid/notejam/templates/user_layout.pt
deleted file mode 100644
index 316058ce7..000000000
--- a/pyramid/notejam/templates/user_layout.pt
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/pyramid/notejam/templates/users/forgot_password.pt b/pyramid/notejam/templates/users/forgot_password.pt
deleted file mode 100644
index e83f6ca34..000000000
--- a/pyramid/notejam/templates/users/forgot_password.pt
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
- Forgot Password?
-
-
- Forgot Password?
-
-
-
-
- Email
- ${renderer.text("email", size=30)}
- ${renderer.errorlist("email")}
-
-
-
-
-
-
diff --git a/pyramid/notejam/templates/users/settings.pt b/pyramid/notejam/templates/users/settings.pt
deleted file mode 100644
index a7475ead0..000000000
--- a/pyramid/notejam/templates/users/settings.pt
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
- Account Settings
-
-
- Account Settings
-
-
-
-
- Current Password
- ${renderer.password("old_password")}
- ${renderer.errorlist("old_password")}
- New Password
- ${renderer.password("password")}
- ${renderer.errorlist("password")}
- Confirm New Password
- ${renderer.password("confirm_password")}
- ${renderer.errorlist("confirm_password")}
-
-
-
-
-
-
-
diff --git a/pyramid/notejam/templates/users/signin.pt b/pyramid/notejam/templates/users/signin.pt
deleted file mode 100644
index 318421243..000000000
--- a/pyramid/notejam/templates/users/signin.pt
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
- Sign In
-
-
- Sign In
-
-
-
-
- Email
- ${renderer.text("email", size=30)}
- ${renderer.errorlist("email")}
- Password
- ${renderer.password("password")}
- ${renderer.errorlist("password")}
- or Sign up
-
- Forgot password?
-
-
-
-
diff --git a/pyramid/notejam/templates/users/signup.pt b/pyramid/notejam/templates/users/signup.pt
deleted file mode 100644
index 2727d7512..000000000
--- a/pyramid/notejam/templates/users/signup.pt
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
- Sign Up
-
-
- Sign Up
-
-
-
-
- Email
- ${renderer.text("email")}
- ${renderer.errorlist("email")}
- Password
- ${renderer.password("password")}
- ${renderer.errorlist("password")}
- Confirm Password
- ${renderer.password("confirm_password")}
- ${renderer.errorlist("confirm_password")}
- ${renderer.errorlist("passwords_match")}
- or Sign in
-
-
-
-
diff --git a/pyramid/notejam/tests.py b/pyramid/notejam/tests.py
deleted file mode 100644
index eff464b28..000000000
--- a/pyramid/notejam/tests.py
+++ /dev/null
@@ -1,333 +0,0 @@
-import unittest
-
-from webtest import TestApp
-from pyramid import testing
-
-from sqlalchemy import create_engine
-
-from models import DBSession, Base, User, Pad, Note
-
-
-class BaseTestCase(unittest.TestCase):
- def setUp(self):
- self.config = testing.setUp()
-
- # @TODO change this
- from . import main
- settings = {'sqlalchemy.url': 'sqlite://', 'session.secret': 'secret'}
- app = main({}, **settings)
- self.testapp = TestApp(app)
-
- engine = create_engine('sqlite://')
- DBSession.configure(bind=engine)
- Base.metadata.create_all(engine)
-
- def tearDown(self):
- DBSession.remove()
- testing.tearDown()
-
- def signin(self, email, password):
- '''
- To have signed in user for next WebTest requests
- Usage:
- self.signin(email='user@example.com', password='password')
- .... next requests
-
- Definitely should be better way to sign in user for testing purposes.
- '''
- self.testapp.post(
- '/signup/',
- {'email': email,
- 'password': password,
- 'confirm_password': password}
- )
- self.testapp.post('/signin/', {'email': email, 'password': password})
-
- def get_form_error_fields(self, response):
- ''' Extract error field names from html '''
- errors = []
- inputs = response.html.form.find_all(["input", "select", "textarea"])
- for i in inputs:
- if i.attrs.get("type") != "submit":
- if i.next_sibling.next_sibling.name == "ul":
- errors.append(i['id'])
- return errors
-
-
-class SignupTestCase(BaseTestCase):
- def _get_user_data(self, **kwargs):
- user_data = {
- 'email': 'email@example.com',
- 'password': 'secure_password',
- 'confirm_password': 'secure_password'
- }
- user_data.update(**kwargs)
- return user_data
-
- def test_signup_success(self):
- # TODO how to get url from the route config?
- self.testapp.post("/signup/", self._get_user_data(), status=302)
-
- def test_signup_fail_required_fields(self):
- response = self.testapp.post("/signup/", {})
- self.assertEquals(
- set(self._get_user_data().keys()),
- set(self.get_form_error_fields(response))
- )
-
- def test_signup_fail_email_exists(self):
- data = self._get_user_data()
- create_object(User, email=data['email'], password=data['password'])
-
- response = self.testapp.post("/signup/", self._get_user_data())
- self.assertEquals(
- set(['email']), set(self.get_form_error_fields(response))
- )
-
- def test_signup_fail_invalid_email(self):
- data = self._get_user_data(email='invalid emails')
-
- response = self.testapp.post("/signup/", data)
- self.assertEquals(
- set(['email']), set(self.get_form_error_fields(response))
- )
-
- def test_signup_fail_passwords_dont_match(self):
- invalid_data = self._get_user_data(password='another pass')
- response = self.testapp.post("/signup/", invalid_data)
-
- self.assertEquals(
- set(['confirm_password']),
- set(self.get_form_error_fields(response))
- )
-
-
-class SigninTestCase(BaseTestCase):
- def _get_user_data(self, **kwargs):
- user_data = {
- 'email': 'email@example.com',
- 'password': 'secure_password'
- }
- user_data.update(**kwargs)
- return user_data
-
- def test_signin_success(self):
- data = self._get_user_data()
- create_object(User, **data)
-
- self.testapp.post("/signin/", data, status=302)
-
- def test_signin_fail(self):
- response = self.testapp.post(
- '/signin/', self._get_user_data())
- self.assertIn('Wrong email or password', response.body)
-
- def test_signin_fail_required_fields(self):
- response = self.testapp.post('/signin/', {})
- self.assertEquals(
- set(self._get_user_data().keys()),
- set(self.get_form_error_fields(response))
- )
-
- def test_signup_fail_invalid_email(self):
- data = self._get_user_data(email='invalid email')
-
- response = self.testapp.post('/signin/', data)
- self.assertEquals(
- ['email'], self.get_form_error_fields(response))
-
-
-class PadTestCase(BaseTestCase):
-
- def test_create_success(self):
- user_data = {'email': 'email@example.com', 'password': 'password'}
- create_object(User, **user_data)
- self.signin(**user_data)
-
- self.testapp.post('/pads/create/', {'name': 'pad'}, status=302)
- self.assertEquals(1, DBSession.query(Pad).count())
-
- def test_create_fail_required_name(self):
- user_data = {'email': 'email@example.com', 'password': 'password'}
- create_object(User, **user_data)
- self.signin(**user_data)
-
- response = self.testapp.post('/pads/create/', {})
- self.assertEquals(
- ['name'], self.get_form_error_fields(response))
-
- def test_create_fail_anonymous_user(self):
- response = self.testapp.post('/pads/create/', {'name': 'pad'})
- self.assertIn('sign-in', response.html.find('form')['class'])
- self.assertEquals(0, DBSession.query(Pad).count())
-
- def test_edit_success(self):
- user_data = {'email': 'email@example.com', 'password': 'password'}
- user = create_object(User, **user_data)
- self.signin(**user_data)
-
- pad = create_object(Pad, name='pad', user=user)
- new_name = 'new pad name'
- self.testapp.post(
- '/pads/{}/edit/'.format(pad.id), {'name': new_name}, status=302)
- self.assertEquals(new_name, DBSession.query(Pad).get(pad.id).name)
-
- def test_edit_fail_required_name(self):
- user_data = {'email': 'email@example.com', 'password': 'password'}
- create_object(User, **user_data)
- self.signin(**user_data)
-
- response = self.testapp.post('/pads/create/', {})
- self.assertEquals(
- ['name'], self.get_form_error_fields(response))
-
- def test_edit_fail_anothers_user(self):
- user_data = {'email': 'email@example.com', 'password': 'password'}
- user = create_object(User, **user_data)
- pad = create_object(Pad, name='pad', user=user)
- another_user_data = {
- 'email': 'another@example.com', 'password': 'password'
- }
- create_object(User, **another_user_data)
- self.signin(email='another@example.com', password='password')
- response = self.testapp.post(
- '/pads/{}/edit/'.format(pad.id),
- {'name': 'new name'}, expect_errors=True)
- self.assertEquals(response.status_code, 404)
-
- def test_delete_success(self):
- user_data = {'email': 'email@example.com', 'password': 'password'}
- user = create_object(User, **user_data)
- pad = create_object(Pad, name='pad', user=user)
- self.signin(**user_data)
- self.testapp.post(
- '/pads/{}/delete/'.format(pad.id),
- {'name': 'new name'}, status=302)
- self.assertEquals(0, DBSession.query(Pad).count())
-
- def test_delete_fail_anothers_user(self):
- user_data = {'email': 'email@example.com', 'password': 'password'}
- user = create_object(User, **user_data)
- pad = create_object(Pad, name='pad', user=user)
- another_user_data = {
- 'email': 'another@example.com', 'password': 'password'
- }
- create_object(User, **another_user_data)
- self.signin(email='another@example.com', password='password')
- response = self.testapp.post(
- '/pads/{}/delete/'.format(pad.id), {}, expect_errors=True)
- self.assertEquals(response.status_code, 404)
-
-
-class NoteTestCase(BaseTestCase):
- def _get_note_data(self, **kwargs):
- note_data = {
- 'name': 'note', 'pad_id': 0, 'text': 'text'
- }
- note_data.update(**kwargs)
- return note_data
-
- def test_create_success(self):
- user_data = {'email': 'email@example.com', 'password': 'password'}
- create_object(User, **user_data)
- self.signin(**user_data)
- self.testapp.post('/notes/create/', self._get_note_data(), status=302)
- self.assertEquals(1, DBSession.query(Note).count())
-
- def test_create_fail_required_fields(self):
- user_data = {'email': 'email@example.com', 'password': 'password'}
- create_object(User, **user_data)
- self.signin(**user_data)
- response = self.testapp.post('/notes/create/', {})
- self.assertEquals(
- set(self._get_note_data().keys()),
- set(self.get_form_error_fields(response))
- )
-
- def test_create_fail_anothers_user_pad(self):
- user_data = {'email': 'email@example.com', 'password': 'password'}
- create_object(User, **user_data)
- another_user = create_object(
- User, email='another@example.com', password='password')
- another_user_pad = create_object(Pad, name='pad', user=another_user)
- self.signin(**user_data)
- response = self.testapp.post(
- '/notes/create/', self._get_note_data(pad_id=another_user_pad.id))
- self.assertEquals(['pad_id'], self.get_form_error_fields(response))
-
- def test_create_fail_anonymous_user(self):
- response = self.testapp.post('/notes/create/', self._get_note_data())
- self.assertIn('sign-in', response.html.find('form')['class'])
- self.assertEquals(0, DBSession.query(Note).count())
-
- def test_edit_success(self):
- user_data = {'email': 'email@example.com', 'password': 'password'}
- user = create_object(User, **user_data)
- self.signin(**user_data)
-
- note = create_object(Note, name='note', text='text', user=user)
- new_name = 'new note name'
- self.testapp.post(
- '/notes/{}/edit/'.format(note.id),
- {'name': new_name, 'pad_id': 0, 'text': 'text'}
- )
- self.assertEquals(new_name, DBSession.query(Note).get(note.id).name)
-
- def test_edit_fail_required_fields(self):
- user_data = {'email': 'email@example.com', 'password': 'password'}
- user = create_object(User, **user_data)
- self.signin(**user_data)
-
- note = create_object(Note, name='note', text='text', user=user)
- response = self.testapp.post(
- '/notes/{}/edit/'.format(note.id), {}
- )
- self.assertEquals(
- set(self._get_note_data().keys()),
- set(self.get_form_error_fields(response))
- )
-
- def test_edit_fail_anothers_user(self):
- user_data = {'email': 'email@example.com', 'password': 'password'}
- user = create_object(User, **user_data)
- note = create_object(Note, name='note', text='text', user=user)
- another_user_data = {
- 'email': 'another@example.com', 'password': 'password'
- }
- create_object(User, **another_user_data)
- self.signin(email='another@example.com', password='password')
- response = self.testapp.post(
- '/pads/{}/edit/'.format(note.id),
- {'name': 'new name', 'text': 'text', 'pad_id': 0},
- expect_errors=True)
- self.assertEquals(response.status_code, 404)
-
- def test_delete_success(self):
- user_data = {'email': 'email@example.com', 'password': 'password'}
- user = create_object(User, **user_data)
- note = create_object(Note, name='note', text='text', user=user)
- self.signin(**user_data)
- self.testapp.post(
- '/notes/{}/delete/'.format(note.id),
- {'name': 'new name'}, status=302)
- self.assertEquals(0, DBSession.query(Note).count())
-
- def test_delete_fail_anothers_user(self):
- user_data = {'email': 'email@example.com', 'password': 'password'}
- user = create_object(User, **user_data)
- note = create_object(Note, name='note', text='text', user=user)
- another_user_data = {
- 'email': 'another@example.com', 'password': 'password'
- }
- create_object(User, **another_user_data)
- self.signin(email='another@example.com', password='password')
- response = self.testapp.post(
- '/pads/{}/delete/'.format(note.id), {}, expect_errors=True)
- self.assertEquals(response.status_code, 404)
-
-
-def create_object(object_class, **object_data):
- obj = object_class(**object_data)
- DBSession.add(obj)
- DBSession.flush()
- return obj
diff --git a/pyramid/notejam/views.py b/pyramid/notejam/views.py
deleted file mode 100644
index 24abae25d..000000000
--- a/pyramid/notejam/views.py
+++ /dev/null
@@ -1,289 +0,0 @@
-import md5
-from datetime import date
-
-from pyramid.view import view_config, forbidden_view_config
-from pyramid.renderers import get_renderer
-
-from pyramid.security import remember, forget, authenticated_userid
-
-from pyramid.httpexceptions import HTTPFound, HTTPNotFound
-
-from pyramid_simpleform import Form, State
-from pyramid_simpleform.renderers import FormRenderer
-from pyramid_mailer import get_mailer
-from pyramid_mailer.message import Message
-
-from models import DBSession, User, Pad, Note
-from forms import (SignupSchema, SigninSchema, PadSchema,
-NoteSchema, ForgotPasswordSchema, ChangePasswordSchema)
-
-
-@view_config(route_name='signin', renderer='templates/users/signin.pt')
-@forbidden_view_config(renderer='templates/users/signin.pt')
-def signin(request):
- form = Form(request, schema=SigninSchema())
- if form.validate():
- query = DBSession.query(User).filter(User.email == form.data['email'])
- if query.count():
- user = query.first()
- if user.check_password(form.data['password']):
- headers = remember(request, user.email)
- return HTTPFound(location='/', headers=headers)
- else:
- request.session.flash(u'Wrong email or password', 'error')
- else:
- request.session.flash(u'Wrong email or password', 'error')
- return _response_dict(
- request,
- renderer=FormRenderer(form),
- )
-
-
-@view_config(route_name='signup', renderer='templates/users/signup.pt')
-def signup(request):
- form = Form(request, schema=SignupSchema())
- if form.validate():
- user = form.bind(User())
- DBSession.add(user)
- request.session.flash(u'Now you can sign in', 'success')
- return HTTPFound(location=request.route_url('signin'))
- return _response_dict(request, renderer=FormRenderer(form))
-
-
-@view_config(route_name='signout')
-def signout(request):
- headers = forget(request)
- return HTTPFound(location=request.route_url('signin'), headers=headers)
-
-
-@view_config(route_name='settings',
- renderer='templates/users/settings.pt')
-def settings(request):
- user = get_current_user(request)
- form = Form(
- request, ChangePasswordSchema(),
- state=State(user=user)
- )
- if form.validate():
- user.password = form.data['password']
- DBSession.add(user)
-
- request.session.flash(u'Password was successfully changed', 'success')
- return HTTPFound(location=request.route_url('settings'))
- return _response_dict(
- request, renderer=FormRenderer(form)
- )
-
-
-@view_config(route_name='forgot_password',
- renderer='templates/users/forgot_password.pt')
-def forgot_password(request):
- form = Form(request, ForgotPasswordSchema())
- if form.validate():
- user = (DBSession.query(User).filter(User.email == form.data['email'])
- .first())
- password = _generate_password(request, user)
- user.password = password
- DBSession.add(user)
-
- send_new_password(request, user, password)
-
- request.session.flash(u'Check your inbox', 'success')
- return HTTPFound(location=request.route_url('signin'))
- return _response_dict(
- request, renderer=FormRenderer(form)
- )
-
-
-@view_config(route_name='notes', renderer='templates/notes/list.pt',
- permission='login_required')
-def notes(request):
- notes = DBSession.query(Note).filter(
- Note.user == get_current_user(request)
- ).order_by(_get_order_by(request.params.get('order'))).all()
- return _response_dict(request, notes=notes)
-
-
-@view_config(route_name='view_note', renderer='templates/notes/view.pt',
- permission='login_required')
-def view_note(request):
- note_id = request.matchdict['note_id']
- note = DBSession.query(Note).filter(
- Note.id == note_id,
- Note.user_id == get_current_user(request).id
- ).first() or raise_404(text='Note not found')
- return _response_dict(request, note=note)
-
-
-@view_config(route_name='pad_notes', renderer='templates/pads/note_list.pt',
- permission='login_required')
-def pad_notes(request):
- pad_id = request.matchdict['pad_id']
- pad = DBSession.query(Pad).filter(
- Pad.id == pad_id,
- Pad.user_id == get_current_user(request).id
- ).first() or raise_404(text='Pad not found')
- pad_notes = pad.notes.order_by(
- _get_order_by(request.params.get('order'))
- ).all()
- return _response_dict(request, pad=pad, pad_notes=pad_notes)
-
-
-@view_config(route_name='create_note', renderer='templates/notes/create.pt',
- permission='login_required')
-def create_note(request):
- user = get_current_user(request)
- form = Form(
- request, schema=NoteSchema(), state=State(user=user))
- if form.validate():
- note = form.bind(Note())
- note.user = user
- DBSession.add(note)
- request.session.flash(u'Note is successfully created', 'success')
- return HTTPFound(location=request.route_url('notes'))
- return _response_dict(
- request,
- renderer=FormRenderer(form)
- )
-
-
-@view_config(route_name='update_note', renderer='templates/notes/edit.pt',
- permission='login_required')
-def update_note(request):
- user = get_current_user(request)
- note_id = request.matchdict['note_id']
- note = DBSession.query(Note).filter(Note.id == note_id).first()
- form = Form(
- request, schema=NoteSchema(), state=State(user=user), obj=note)
- if form.validate():
- note = form.bind(note)
- DBSession.add(note)
- request.session.flash(u'Note is successfully updated', 'success')
-
- # build redirect url
- location = request.route_url('notes')
- if note.pad is not None:
- location = request.route_url('pad_notes', pad_id=note.pad.id)
-
- return HTTPFound(location=location)
- return _response_dict(
- request,
- note=note,
- renderer=FormRenderer(form)
- )
-
-
-@view_config(route_name='delete_note', renderer='templates/notes/delete.pt',
- permission='login_required')
-def delete_note(request):
- note_id = request.matchdict['note_id']
- note = DBSession.query(Note).filter(Note.id == note_id).first()
- if request.method == 'POST':
- DBSession.delete(note)
- request.session.flash(u'Note is successfully deleted', 'success')
- return HTTPFound(location=request.route_url('notes'))
- return _response_dict(request, note=note)
-
-
-@view_config(route_name='create_pad', renderer='templates/pads/create.pt',
- permission='login_required')
-def create_pad(request):
- form = Form(request, schema=PadSchema())
- if form.validate():
- pad = form.bind(Pad())
- pad.user = get_current_user(request)
- DBSession.add(pad)
- request.session.flash(u'Pad is successfully created', 'success')
- return HTTPFound(location=request.route_url('notes'))
- return _response_dict(request, renderer=FormRenderer(form), pad=False)
-
-
-@view_config(route_name='update_pad', renderer='templates/pads/edit.pt',
- permission='login_required')
-def update_pad(request):
- pad_id = request.matchdict['pad_id']
- pad = DBSession.query(Pad).filter(
- Pad.id == pad_id,
- Pad.user_id == get_current_user(request).id
- ).first() or raise_404(text='Pad not found')
- form = Form(request, schema=PadSchema(), obj=pad)
- if form.validate():
- pad = form.bind(pad)
- pad.user = get_current_user(request)
- DBSession.add(pad)
- request.session.flash(u'Pad is successfully updated', 'success')
- return HTTPFound(
- location=request.route_url('pad_notes', pad_id=pad.id)
- )
- return _response_dict(request, renderer=FormRenderer(form), pad=pad)
-
-
-@view_config(route_name='delete_pad', renderer='templates/pads/delete.pt',
- permission='login_required')
-def delete_pad(request):
- pad_id = request.matchdict['pad_id']
- pad = DBSession.query(Pad).filter(
- Pad.id == pad_id,
- Pad.user_id == get_current_user(request).id
- ).first() or raise_404(text='Pad not found')
- if request.method == 'POST':
- DBSession.delete(pad)
- request.session.flash(u'Pad is successfully deleted', 'success')
- return HTTPFound(location=request.route_url('notes'))
- return _response_dict(request, pad=pad)
-
-
-#helper functions
-def _response_dict(request, *args, **kwargs):
- return dict(
- logged_in=authenticated_userid(request),
- pads=DBSession.query(Pad).filter(
- Pad.user == get_current_user(request)
- ).all(),
- snippets=get_renderer('templates/snippets.pt').implementation(),
- **kwargs
- )
-
-
-def get_current_user(request):
- return DBSession.query(User).filter(
- User.email == authenticated_userid(request)
- ).first()
-
-
-def _get_order_by(param='-updated_at'):
- ''' get model order param by string description '''
- return {
- 'name': Note.name.asc(),
- '-name': Note.name.desc(),
- 'updated_at': Note.updated_at.asc(),
- '-updated_at': Note.updated_at.desc(),
- }.get(param, Note.updated_at.desc())
-
-
-def _generate_password(request, user):
- ''' generate new user password '''
- m = md5.new()
- m.update(
- "{email}{secret}{date}".format(
- email=user.email,
- secret=request.registry.settings.get('session.secret'),
- date=str(date.today())
- )
- )
- return m.hexdigest()[:8]
-
-
-def send_new_password(request, user, password):
- mailer = get_mailer(request)
- message = Message(
- subject="Password Recovery",
- sender="noreply@notejamapp.com",
- recipients=[user.email],
- body="Your new password is: {}".format(password)
- )
- mailer.send_immediately(message, fail_silently=True)
-
-
-def raise_404(text='Requested object not found'):
- raise HTTPNotFound(text)
diff --git a/pyramid/production.ini b/pyramid/production.ini
deleted file mode 100644
index 7f080b506..000000000
--- a/pyramid/production.ini
+++ /dev/null
@@ -1,62 +0,0 @@
-###
-# app configuration
-# http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html
-###
-
-[app:main]
-use = egg:notejam
-
-pyramid.reload_templates = false
-pyramid.debug_authorization = false
-pyramid.debug_notfound = false
-pyramid.debug_routematch = false
-pyramid.default_locale_name = en
-pyramid.includes =
- pyramid_tm
-
-sqlalchemy.url = sqlite:///%(here)s/notejam.sqlite
-
-[server:main]
-use = egg:waitress#main
-host = 0.0.0.0
-port = 6543
-
-###
-# logging configuration
-# http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/logging.html
-###
-
-[loggers]
-keys = root, notejam, sqlalchemy
-
-[handlers]
-keys = console
-
-[formatters]
-keys = generic
-
-[logger_root]
-level = WARN
-handlers = console
-
-[logger_notejam]
-level = WARN
-handlers =
-qualname = notejam
-
-[logger_sqlalchemy]
-level = WARN
-handlers =
-qualname = sqlalchemy.engine
-# "level = INFO" logs SQL queries.
-# "level = DEBUG" logs SQL queries and results.
-# "level = WARN" logs neither. (Recommended for production systems.)
-
-[handler_console]
-class = StreamHandler
-args = (sys.stderr,)
-level = NOTSET
-formatter = generic
-
-[formatter_generic]
-format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s
diff --git a/pyramid/setup.cfg b/pyramid/setup.cfg
deleted file mode 100644
index 1d816b58b..000000000
--- a/pyramid/setup.cfg
+++ /dev/null
@@ -1,27 +0,0 @@
-[nosetests]
-match=^test
-nocapture=1
-cover-package=notejam
-with-coverage=1
-cover-erase=1
-
-[compile_catalog]
-directory = notejam/locale
-domain = notejam
-statistics = true
-
-[extract_messages]
-add_comments = TRANSLATORS:
-output_file = notejam/locale/notejam.pot
-width = 80
-
-[init_catalog]
-domain = notejam
-input_file = notejam/locale/notejam.pot
-output_dir = notejam/locale
-
-[update_catalog]
-domain = notejam
-input_file = notejam/locale/notejam.pot
-output_dir = notejam/locale
-previous = true
diff --git a/pyramid/setup.py b/pyramid/setup.py
deleted file mode 100644
index 16b02e3ae..000000000
--- a/pyramid/setup.py
+++ /dev/null
@@ -1,49 +0,0 @@
-import os
-
-from setuptools import setup, find_packages
-
-here = os.path.abspath(os.path.dirname(__file__))
-README = open(os.path.join(here, 'README.txt')).read()
-CHANGES = open(os.path.join(here, 'CHANGES.txt')).read()
-
-requires = [
- 'pyramid',
- 'pyramid_chameleon',
- 'SQLAlchemy',
- 'transaction',
- 'pyramid_tm',
- 'pyramid_debugtoolbar',
- 'zope.sqlalchemy',
- 'waitress',
- 'pyramid_simpleform',
- 'cryptacular',
- 'WebTest',
- 'pyramid-mailer'
- ]
-
-setup(name='notejam',
- version='0.0',
- description='notejam',
- long_description=README + '\n\n' + CHANGES,
- classifiers=[
- "Programming Language :: Python",
- "Framework :: Pyramid",
- "Topic :: Internet :: WWW/HTTP",
- "Topic :: Internet :: WWW/HTTP :: WSGI :: Application",
- ],
- author='',
- author_email='',
- url='',
- keywords='web wsgi bfg pylons pyramid',
- packages=find_packages(),
- include_package_data=True,
- zip_safe=False,
- test_suite='notejam',
- install_requires=requires,
- entry_points="""\
- [paste.app_factory]
- main = notejam:main
- [console_scripts]
- initialize_notejam_db = notejam.scripts.initializedb:main
- """,
- )
diff --git a/rubyonrails/README.rst b/rubyonrails/README.rst
deleted file mode 100644
index c2a853fcf..000000000
--- a/rubyonrails/README.rst
+++ /dev/null
@@ -1,83 +0,0 @@
-**********************
-Notejam: Ruby on Rails
-**********************
-
-Notejam application implemented using `Ruby on Rails
`_ framework.
-
-Ruby on Rails version: 4.2.5
-
-==========================
-Installation and launching
-==========================
-
------
-Clone
------
-
-Clone the repo:
-
-.. code-block:: bash
-
- $ git clone git@github.com:komarserjio/notejam.git YOUR_PROJECT_DIR/
-
--------
-Install
--------
-
-Use `RVM
`_ or `rbenv
`_
-for environment management.
-
-Install dependencies:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/rubyonrails/notejam/
- $ bundle install
-
-Create database schema:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/rubyonrails/notejam/
- $ rake db:migrate
-
-
-------
-Launch
-------
-
-
-Start built-in web server:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/rubyonrails/notejam/
- $ rails server
-
-Go to http://127.0.0.1:3000/ in your browser.
-
-
----------
-Run tests
----------
-
-Start functional and unit tests:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/rubyonrails/notejam/
- $ rake test
-
-============
-Contribution
-============
-Do you have ruby/rails experience? Help the app to follow ruby and rails best practices.
-
-Please send your pull requests in the ``master`` branch.
-Always prepend your commits with framework name:
-
-.. code-block:: bash
-
- Rubyonrails: Implemented sign in functionality
-
-Read `contribution guide `_ for details.
diff --git a/rubyonrails/notejam/.gitignore b/rubyonrails/notejam/.gitignore
deleted file mode 100644
index 6a502e997..000000000
--- a/rubyonrails/notejam/.gitignore
+++ /dev/null
@@ -1,16 +0,0 @@
-# See https://help.github.com/articles/ignoring-files for more about ignoring files.
-#
-# If you find yourself ignoring temporary files generated by your text editor
-# or operating system, you probably want to add a global ignore instead:
-# git config --global core.excludesfile '~/.gitignore_global'
-
-# Ignore bundler config.
-/.bundle
-
-# Ignore the default SQLite database.
-/db/*.sqlite3
-/db/*.sqlite3-journal
-
-# Ignore all logfiles and tempfiles.
-/log/*.log
-/tmp
diff --git a/rubyonrails/notejam/Gemfile b/rubyonrails/notejam/Gemfile
deleted file mode 100644
index 63bea231d..000000000
--- a/rubyonrails/notejam/Gemfile
+++ /dev/null
@@ -1,45 +0,0 @@
-source 'https://rubygems.org'
-
-# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
-gem 'rails', '4.2.5'
-
-# Use sqlite3 as the database for Active Record
-gem 'sqlite3'
-
-# Use SCSS for stylesheets
-gem 'sass-rails', '~> 4.0.0'
-
-# Use Uglifier as compressor for JavaScript assets
-gem 'uglifier', '>= 1.3.0'
-
-# Use CoffeeScript for .js.coffee assets and views
-gem 'coffee-rails', '~> 4.0.0'
-
-# See https://github.com/sstephenson/execjs#readme for more supported runtimes
-# gem 'therubyracer', platforms: :ruby
-
-# Use jquery as the JavaScript library
-gem 'jquery-rails'
-
-# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
-gem 'turbolinks'
-
-# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
-gem 'jbuilder', '~> 1.2'
-
-group :doc do
- # bundle exec rake doc:rails generates the API under doc/api.
- gem 'sdoc', require: false
-end
-
-# Use ActiveModel has_secure_password
-gem 'bcrypt', '~> 3.1.2'
-
-# Use unicorn as the app server
-# gem 'unicorn'
-
-# Use Capistrano for deployment
-# gem 'capistrano', group: :development
-
-# Use debugger
-# gem 'debugger', group: [:development, :test]
diff --git a/rubyonrails/notejam/Gemfile.lock b/rubyonrails/notejam/Gemfile.lock
deleted file mode 100644
index 3ce888be2..000000000
--- a/rubyonrails/notejam/Gemfile.lock
+++ /dev/null
@@ -1,150 +0,0 @@
-GEM
- remote: https://rubygems.org/
- specs:
- actionmailer (4.2.5)
- actionpack (= 4.2.5)
- actionview (= 4.2.5)
- activejob (= 4.2.5)
- mail (~> 2.5, >= 2.5.4)
- rails-dom-testing (~> 1.0, >= 1.0.5)
- actionpack (4.2.5)
- actionview (= 4.2.5)
- activesupport (= 4.2.5)
- rack (~> 1.6)
- rack-test (~> 0.6.2)
- rails-dom-testing (~> 1.0, >= 1.0.5)
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
- actionview (4.2.5)
- activesupport (= 4.2.5)
- builder (~> 3.1)
- erubis (~> 2.7.0)
- rails-dom-testing (~> 1.0, >= 1.0.5)
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
- activejob (4.2.5)
- activesupport (= 4.2.5)
- globalid (>= 0.3.0)
- activemodel (4.2.5)
- activesupport (= 4.2.5)
- builder (~> 3.1)
- activerecord (4.2.5)
- activemodel (= 4.2.5)
- activesupport (= 4.2.5)
- arel (~> 6.0)
- activesupport (4.2.5)
- i18n (~> 0.7)
- json (~> 1.7, >= 1.7.7)
- minitest (~> 5.1)
- thread_safe (~> 0.3, >= 0.3.4)
- tzinfo (~> 1.1)
- arel (6.0.3)
- bcrypt (3.1.10)
- bcrypt-ruby (3.1.5)
- bcrypt (>= 3.1.3)
- builder (3.2.2)
- coffee-rails (4.0.1)
- coffee-script (>= 2.2.0)
- railties (>= 4.0.0, < 5.0)
- coffee-script (2.4.1)
- coffee-script-source
- execjs
- coffee-script-source (1.10.0)
- erubis (2.7.0)
- execjs (2.6.0)
- globalid (0.3.6)
- activesupport (>= 4.1.0)
- hike (1.2.3)
- i18n (0.7.0)
- jbuilder (1.5.3)
- activesupport (>= 3.0.0)
- multi_json (>= 1.2.0)
- jquery-rails (4.0.5)
- rails-dom-testing (~> 1.0)
- railties (>= 4.2.0)
- thor (>= 0.14, < 2.0)
- json (1.8.3)
- loofah (2.0.3)
- nokogiri (>= 1.5.9)
- mail (2.6.3)
- mime-types (>= 1.16, < 3)
- mime-types (2.99)
- mini_portile (0.6.2)
- minitest (5.8.3)
- multi_json (1.11.2)
- nokogiri (1.6.6.4)
- mini_portile (~> 0.6.0)
- rack (1.6.4)
- rack-test (0.6.3)
- rack (>= 1.0)
- rails (4.2.5)
- actionmailer (= 4.2.5)
- actionpack (= 4.2.5)
- actionview (= 4.2.5)
- activejob (= 4.2.5)
- activemodel (= 4.2.5)
- activerecord (= 4.2.5)
- activesupport (= 4.2.5)
- bundler (>= 1.3.0, < 2.0)
- railties (= 4.2.5)
- sprockets-rails
- rails-deprecated_sanitizer (1.0.3)
- activesupport (>= 4.2.0.alpha)
- rails-dom-testing (1.0.7)
- activesupport (>= 4.2.0.beta, < 5.0)
- nokogiri (~> 1.6.0)
- rails-deprecated_sanitizer (>= 1.0.1)
- rails-html-sanitizer (1.0.2)
- loofah (~> 2.0)
- railties (4.2.5)
- actionpack (= 4.2.5)
- activesupport (= 4.2.5)
- rake (>= 0.8.7)
- thor (>= 0.18.1, < 2.0)
- rake (10.4.2)
- rdoc (4.2.0)
- sass (3.2.19)
- sass-rails (4.0.5)
- railties (>= 4.0.0, < 5.0)
- sass (~> 3.2.2)
- sprockets (~> 2.8, < 3.0)
- sprockets-rails (~> 2.0)
- sdoc (0.4.1)
- json (~> 1.7, >= 1.7.7)
- rdoc (~> 4.0)
- sprockets (2.12.4)
- hike (~> 1.2)
- multi_json (~> 1.0)
- rack (~> 1.0)
- tilt (~> 1.1, != 1.3.0)
- sprockets-rails (2.3.3)
- actionpack (>= 3.0)
- activesupport (>= 3.0)
- sprockets (>= 2.8, < 4.0)
- sqlite3 (1.3.11)
- thor (0.19.1)
- thread_safe (0.3.5)
- tilt (1.4.1)
- turbolinks (2.5.3)
- coffee-rails
- tzinfo (1.2.2)
- thread_safe (~> 0.1)
- uglifier (2.7.2)
- execjs (>= 0.3.0)
- json (>= 1.8.0)
-
-PLATFORMS
- ruby
-
-DEPENDENCIES
- bcrypt-ruby (~> 3.1.2)
- coffee-rails (~> 4.0.0)
- jbuilder (~> 1.2)
- jquery-rails
- rails (= 4.2.5)
- sass-rails (~> 4.0.0)
- sdoc
- sqlite3
- turbolinks
- uglifier (>= 1.3.0)
-
-BUNDLED WITH
- 1.10.6
diff --git a/rubyonrails/notejam/README.rdoc b/rubyonrails/notejam/README.rdoc
deleted file mode 100644
index dd4e97e22..000000000
--- a/rubyonrails/notejam/README.rdoc
+++ /dev/null
@@ -1,28 +0,0 @@
-== README
-
-This README would normally document whatever steps are necessary to get the
-application up and running.
-
-Things you may want to cover:
-
-* Ruby version
-
-* System dependencies
-
-* Configuration
-
-* Database creation
-
-* Database initialization
-
-* How to run the test suite
-
-* Services (job queues, cache servers, search engines, etc.)
-
-* Deployment instructions
-
-* ...
-
-
-Please feel free to use a different markup language if you do not plan to run
-rake doc:app .
diff --git a/rubyonrails/notejam/Rakefile b/rubyonrails/notejam/Rakefile
deleted file mode 100644
index f2905d99c..000000000
--- a/rubyonrails/notejam/Rakefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# Add your own tasks in files placed in lib/tasks ending in .rake,
-# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
-
-require File.expand_path('../config/application', __FILE__)
-
-Notejam::Application.load_tasks
diff --git a/rubyonrails/notejam/app/assets/images/.keep b/rubyonrails/notejam/app/assets/images/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/rubyonrails/notejam/app/assets/javascripts/application.js b/rubyonrails/notejam/app/assets/javascripts/application.js
deleted file mode 100644
index d6925fa43..000000000
--- a/rubyonrails/notejam/app/assets/javascripts/application.js
+++ /dev/null
@@ -1,16 +0,0 @@
-// This is a manifest file that'll be compiled into application.js, which will include all the files
-// listed below.
-//
-// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
-// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
-//
-// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
-// compiled file.
-//
-// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
-// about supported directives.
-//
-//= require jquery
-//= require jquery_ujs
-//= require turbolinks
-//= require_tree .
diff --git a/rubyonrails/notejam/app/assets/javascripts/note.js.coffee b/rubyonrails/notejam/app/assets/javascripts/note.js.coffee
deleted file mode 100644
index 24f83d18b..000000000
--- a/rubyonrails/notejam/app/assets/javascripts/note.js.coffee
+++ /dev/null
@@ -1,3 +0,0 @@
-# Place all the behaviors and hooks related to the matching controller here.
-# All this logic will automatically be available in application.js.
-# You can use CoffeeScript in this file: http://coffeescript.org/
diff --git a/rubyonrails/notejam/app/assets/javascripts/pad.js.coffee b/rubyonrails/notejam/app/assets/javascripts/pad.js.coffee
deleted file mode 100644
index 24f83d18b..000000000
--- a/rubyonrails/notejam/app/assets/javascripts/pad.js.coffee
+++ /dev/null
@@ -1,3 +0,0 @@
-# Place all the behaviors and hooks related to the matching controller here.
-# All this logic will automatically be available in application.js.
-# You can use CoffeeScript in this file: http://coffeescript.org/
diff --git a/rubyonrails/notejam/app/assets/javascripts/user.js.coffee b/rubyonrails/notejam/app/assets/javascripts/user.js.coffee
deleted file mode 100644
index 24f83d18b..000000000
--- a/rubyonrails/notejam/app/assets/javascripts/user.js.coffee
+++ /dev/null
@@ -1,3 +0,0 @@
-# Place all the behaviors and hooks related to the matching controller here.
-# All this logic will automatically be available in application.js.
-# You can use CoffeeScript in this file: http://coffeescript.org/
diff --git a/rubyonrails/notejam/app/assets/stylesheets/application.css b/rubyonrails/notejam/app/assets/stylesheets/application.css
deleted file mode 100644
index 3192ec897..000000000
--- a/rubyonrails/notejam/app/assets/stylesheets/application.css
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * This is a manifest file that'll be compiled into application.css, which will include all the files
- * listed below.
- *
- * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
- * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
- *
- * You're free to add application-wide styles to this file and they'll appear at the top of the
- * compiled file, but it's generally better to create a new file per style scope.
- *
- *= require_self
- *= require_tree .
- */
diff --git a/rubyonrails/notejam/app/assets/stylesheets/base.css b/rubyonrails/notejam/app/assets/stylesheets/base.css
deleted file mode 100644
index 9ae027089..000000000
--- a/rubyonrails/notejam/app/assets/stylesheets/base.css
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
-* Skeleton V1.2
-* Copyright 2011, Dave Gamache
-* www.getskeleton.com
-* Free to use under the MIT license.
-* http://www.opensource.org/licenses/mit-license.php
-* 6/20/2012
-*/
-
-
-/* Table of Content
-==================================================
- #Reset & Basics
- #Basic Styles
- #Site Styles
- #Typography
- #Links
- #Lists
- #Images
- #Buttons
- #Forms
- #Misc */
-
-
-/* #Reset & Basics (Inspired by E. Meyers)
-================================================== */
- html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
- margin: 0;
- padding: 0;
- border: 0;
- font-size: 100%;
- font: inherit;
- vertical-align: baseline; }
- article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
- display: block; }
- body {
- line-height: 1; }
- ol, ul {
- list-style: none; }
- blockquote, q {
- quotes: none; }
- blockquote:before, blockquote:after,
- q:before, q:after {
- content: '';
- content: none; }
- table {
- border-collapse: collapse;
- border-spacing: 0; }
-
-
-/* #Basic Styles
-================================================== */
- body {
- background: #fff;
- font: 14px/21px "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif;
- color: #444;
- -webkit-font-smoothing: antialiased; /* Fix for webkit rendering */
- -webkit-text-size-adjust: 100%;
- }
-
-
-/* #Typography
-================================================== */
- h1, h2, h3, h4, h5, h6 {
- color: #181818;
- font-family: "Georgia", "Times New Roman", serif;
- font-weight: normal; }
- h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { font-weight: inherit; }
- h1 { font-size: 46px; line-height: 50px; margin-bottom: 14px;}
- h2 { font-size: 35px; line-height: 40px; margin-bottom: 10px; }
- h3 { font-size: 28px; line-height: 34px; margin-bottom: 8px; }
- h4 { font-size: 21px; line-height: 30px; margin-bottom: 4px; }
- h5 { font-size: 17px; line-height: 24px; }
- h6 { font-size: 14px; line-height: 21px; }
- .subheader { color: #777; }
-
- p { margin: 0 0 20px 0; }
- p img { margin: 0; }
- p.lead { font-size: 21px; line-height: 27px; color: #777; }
-
- em { font-style: italic; }
- strong { font-weight: bold; color: #333; }
- small { font-size: 80%; }
-
-/* Blockquotes */
- blockquote, blockquote p { font-size: 17px; line-height: 24px; color: #777; font-style: italic; }
- blockquote { margin: 0 0 20px; padding: 9px 20px 0 19px; border-left: 1px solid #ddd; }
- blockquote cite { display: block; font-size: 12px; color: #555; }
- blockquote cite:before { content: "\2014 \0020"; }
- blockquote cite a, blockquote cite a:visited, blockquote cite a:visited { color: #555; }
-
- hr { border: solid #ddd; border-width: 1px 0 0; clear: both; margin: 10px 0 30px; height: 0; }
-
-
-/* #Links
-================================================== */
- a, a:visited { color: #333; text-decoration: underline; outline: 0; }
- a:hover, a:focus { color: #000; }
- p a, p a:visited { line-height: inherit; }
-
-
-/* #Lists
-================================================== */
- ul, ol { margin-bottom: 20px; }
- ul { list-style: none outside; }
- ol { list-style: decimal; }
- ol, ul.square, ul.circle, ul.disc { margin-left: 30px; }
- ul.square { list-style: square outside; }
- ul.circle { list-style: circle outside; }
- ul.disc { list-style: disc outside; }
- ul ul, ul ol,
- ol ol, ol ul { margin: 4px 0 5px 30px; font-size: 90%; }
- ul ul li, ul ol li,
- ol ol li, ol ul li { margin-bottom: 6px; }
- li { line-height: 18px; margin-bottom: 12px; }
- ul.large li { line-height: 21px; }
- li p { line-height: 21px; }
-
-/* #Images
-================================================== */
-
- img.scale-with-grid {
- max-width: 100%;
- height: auto; }
-
-
-/* #Buttons
-================================================== */
-
- .button,
- button,
- input[type="submit"],
- input[type="reset"],
- input[type="button"] {
- background: #eee; /* Old browsers */
- background: #eee -moz-linear-gradient(top, rgba(255,255,255,.2) 0%, rgba(0,0,0,.2) 100%); /* FF3.6+ */
- background: #eee -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.2)), color-stop(100%,rgba(0,0,0,.2))); /* Chrome,Safari4+ */
- background: #eee -webkit-linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* Chrome10+,Safari5.1+ */
- background: #eee -o-linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* Opera11.10+ */
- background: #eee -ms-linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* IE10+ */
- background: #eee linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* W3C */
- border: 1px solid #aaa;
- border-top: 1px solid #ccc;
- border-left: 1px solid #ccc;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
- border-radius: 3px;
- color: #444;
- display: inline-block;
- font-size: 11px;
- font-weight: bold;
- text-decoration: none;
- text-shadow: 0 1px rgba(255, 255, 255, .75);
- cursor: pointer;
- margin-bottom: 20px;
- line-height: normal;
- padding: 8px 10px;
- font-family: "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; }
-
- .button:hover,
- button:hover,
- input[type="submit"]:hover,
- input[type="reset"]:hover,
- input[type="button"]:hover {
- color: #222;
- background: #ddd; /* Old browsers */
- background: #ddd -moz-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); /* FF3.6+ */
- background: #ddd -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.3)), color-stop(100%,rgba(0,0,0,.3))); /* Chrome,Safari4+ */
- background: #ddd -webkit-linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* Chrome10+,Safari5.1+ */
- background: #ddd -o-linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* Opera11.10+ */
- background: #ddd -ms-linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* IE10+ */
- background: #ddd linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* W3C */
- border: 1px solid #888;
- border-top: 1px solid #aaa;
- border-left: 1px solid #aaa; }
-
- .button:active,
- button:active,
- input[type="submit"]:active,
- input[type="reset"]:active,
- input[type="button"]:active {
- border: 1px solid #666;
- background: #ccc; /* Old browsers */
- background: #ccc -moz-linear-gradient(top, rgba(255,255,255,.35) 0%, rgba(10,10,10,.4) 100%); /* FF3.6+ */
- background: #ccc -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.35)), color-stop(100%,rgba(10,10,10,.4))); /* Chrome,Safari4+ */
- background: #ccc -webkit-linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* Chrome10+,Safari5.1+ */
- background: #ccc -o-linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* Opera11.10+ */
- background: #ccc -ms-linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* IE10+ */
- background: #ccc linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* W3C */ }
-
- .button.full-width,
- button.full-width,
- input[type="submit"].full-width,
- input[type="reset"].full-width,
- input[type="button"].full-width {
- width: 100%;
- padding-left: 0 !important;
- padding-right: 0 !important;
- text-align: center; }
-
- /* Fix for odd Mozilla border & padding issues */
- button::-moz-focus-inner,
- input::-moz-focus-inner {
- border: 0;
- padding: 0;
- }
-
-
-/* #Forms
-================================================== */
-
- form {
- margin-bottom: 20px; }
- fieldset {
- margin-bottom: 20px; }
- input[type="text"],
- input[type="password"],
- input[type="email"],
- textarea,
- select {
- border: 1px solid #ccc;
- padding: 6px 4px;
- outline: none;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
- font: 13px "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif;
- color: #777;
- margin: 0;
- width: 210px;
- max-width: 100%;
- display: block;
- margin-bottom: 20px;
- background: #fff; }
- select {
- padding: 0; }
- input[type="text"]:focus,
- input[type="password"]:focus,
- input[type="email"]:focus,
- textarea:focus {
- border: 1px solid #aaa;
- color: #444;
- -moz-box-shadow: 0 0 3px rgba(0,0,0,.2);
- -webkit-box-shadow: 0 0 3px rgba(0,0,0,.2);
- box-shadow: 0 0 3px rgba(0,0,0,.2); }
- textarea {
- min-height: 60px; }
- label,
- legend {
- display: block;
- font-weight: bold;
- font-size: 13px; }
- select {
- width: 220px; }
- input[type="checkbox"] {
- display: inline; }
- label span,
- legend span {
- font-weight: normal;
- font-size: 13px;
- color: #444; }
-
-/* #Misc
-================================================== */
- .remove-bottom { margin-bottom: 0 !important; }
- .half-bottom { margin-bottom: 10px !important; }
- .add-bottom { margin-bottom: 20px !important; }
-
-
diff --git a/rubyonrails/notejam/app/assets/stylesheets/layout.css b/rubyonrails/notejam/app/assets/stylesheets/layout.css
deleted file mode 100644
index b99f45143..000000000
--- a/rubyonrails/notejam/app/assets/stylesheets/layout.css
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-* Skeleton V1.2
-* Copyright 2011, Dave Gamache
-* www.getskeleton.com
-* Free to use under the MIT license.
-* http://www.opensource.org/licenses/mit-license.php
-* 6/20/2012
-*/
-
-/* Table of Content
-==================================================
- #Site Styles
- #Page Styles
- #Media Queries
- #Font-Face */
-
-/* #Site Styles
-================================================== */
-
-/* #Page Styles
-================================================== */
-
-/* #Media Queries
-================================================== */
-
- /* Smaller than standard 960 (devices and browsers) */
- @media only screen and (max-width: 959px) {}
-
- /* Tablet Portrait size to standard 960 (devices and browsers) */
- @media only screen and (min-width: 768px) and (max-width: 959px) {}
-
- /* All Mobile Sizes (devices and browser) */
- @media only screen and (max-width: 767px) {}
-
- /* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
- @media only screen and (min-width: 480px) and (max-width: 767px) {}
-
- /* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
- @media only screen and (max-width: 479px) {}
-
-
-/* #Font-Face
-================================================== */
-/* This is the proper syntax for an @font-face file
- Just create a "fonts" folder at the root,
- copy your FontName into code below and remove
- comment brackets */
-
-/* @font-face {
- font-family: 'FontName';
- src: url('../fonts/FontName.eot');
- src: url('../fonts/FontName.eot?iefix') format('eot'),
- url('../fonts/FontName.woff') format('woff'),
- url('../fonts/FontName.ttf') format('truetype'),
- url('../fonts/FontName.svg#webfontZam02nTh') format('svg');
- font-weight: normal;
- font-style: normal; }
-*/
\ No newline at end of file
diff --git a/rubyonrails/notejam/app/assets/stylesheets/note.css.scss b/rubyonrails/notejam/app/assets/stylesheets/note.css.scss
deleted file mode 100644
index e3dd976f6..000000000
--- a/rubyonrails/notejam/app/assets/stylesheets/note.css.scss
+++ /dev/null
@@ -1,3 +0,0 @@
-// Place all the styles related to the note controller here.
-// They will automatically be included in application.css.
-// You can use Sass (SCSS) here: http://sass-lang.com/
diff --git a/rubyonrails/notejam/app/assets/stylesheets/pad.css.scss b/rubyonrails/notejam/app/assets/stylesheets/pad.css.scss
deleted file mode 100644
index a22351d7a..000000000
--- a/rubyonrails/notejam/app/assets/stylesheets/pad.css.scss
+++ /dev/null
@@ -1,3 +0,0 @@
-// Place all the styles related to the pad controller here.
-// They will automatically be included in application.css.
-// You can use Sass (SCSS) here: http://sass-lang.com/
diff --git a/rubyonrails/notejam/app/assets/stylesheets/skeleton.css b/rubyonrails/notejam/app/assets/stylesheets/skeleton.css
deleted file mode 100644
index 5db3d38ac..000000000
--- a/rubyonrails/notejam/app/assets/stylesheets/skeleton.css
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
-* Skeleton V1.2
-* Copyright 2011, Dave Gamache
-* www.getskeleton.com
-* Free to use under the MIT license.
-* http://www.opensource.org/licenses/mit-license.php
-* 6/20/2012
-*/
-
-
-/* Table of Contents
-==================================================
- #Base 960 Grid
- #Tablet (Portrait)
- #Mobile (Portrait)
- #Mobile (Landscape)
- #Clearing */
-
-
-
-/* #Base 960 Grid
-================================================== */
-
- .container { position: relative; width: 960px; margin: 0 auto; padding: 0; }
- .container .column,
- .container .columns { float: left; display: inline; margin-left: 10px; margin-right: 10px; }
- .row { margin-bottom: 20px; }
-
- /* Nested Column Classes */
- .column.alpha, .columns.alpha { margin-left: 0; }
- .column.omega, .columns.omega { margin-right: 0; }
-
- /* Base Grid */
- .container .one.column,
- .container .one.columns { width: 40px; }
- .container .two.columns { width: 100px; }
- .container .three.columns { width: 160px; }
- .container .four.columns { width: 220px; }
- .container .five.columns { width: 280px; }
- .container .six.columns { width: 340px; }
- .container .seven.columns { width: 400px; }
- .container .eight.columns { width: 460px; }
- .container .nine.columns { width: 520px; }
- .container .ten.columns { width: 580px; }
- .container .eleven.columns { width: 640px; }
- .container .twelve.columns { width: 700px; }
- .container .thirteen.columns { width: 760px; }
- .container .fourteen.columns { width: 820px; }
- .container .fifteen.columns { width: 880px; }
- .container .sixteen.columns { width: 940px; }
-
- .container .one-third.column { width: 300px; }
- .container .two-thirds.column { width: 620px; }
-
- /* Offsets */
- .container .offset-by-one { padding-left: 60px; }
- .container .offset-by-two { padding-left: 120px; }
- .container .offset-by-three { padding-left: 180px; }
- .container .offset-by-four { padding-left: 240px; }
- .container .offset-by-five { padding-left: 300px; }
- .container .offset-by-six { padding-left: 360px; }
- .container .offset-by-seven { padding-left: 420px; }
- .container .offset-by-eight { padding-left: 480px; }
- .container .offset-by-nine { padding-left: 540px; }
- .container .offset-by-ten { padding-left: 600px; }
- .container .offset-by-eleven { padding-left: 660px; }
- .container .offset-by-twelve { padding-left: 720px; }
- .container .offset-by-thirteen { padding-left: 780px; }
- .container .offset-by-fourteen { padding-left: 840px; }
- .container .offset-by-fifteen { padding-left: 900px; }
-
-
-
-/* #Tablet (Portrait)
-================================================== */
-
- /* Note: Design for a width of 768px */
-
- @media only screen and (min-width: 768px) and (max-width: 959px) {
- .container { width: 768px; }
- .container .column,
- .container .columns { margin-left: 10px; margin-right: 10px; }
- .column.alpha, .columns.alpha { margin-left: 0; margin-right: 10px; }
- .column.omega, .columns.omega { margin-right: 0; margin-left: 10px; }
- .alpha.omega { margin-left: 0; margin-right: 0; }
-
- .container .one.column,
- .container .one.columns { width: 28px; }
- .container .two.columns { width: 76px; }
- .container .three.columns { width: 124px; }
- .container .four.columns { width: 172px; }
- .container .five.columns { width: 220px; }
- .container .six.columns { width: 268px; }
- .container .seven.columns { width: 316px; }
- .container .eight.columns { width: 364px; }
- .container .nine.columns { width: 412px; }
- .container .ten.columns { width: 460px; }
- .container .eleven.columns { width: 508px; }
- .container .twelve.columns { width: 556px; }
- .container .thirteen.columns { width: 604px; }
- .container .fourteen.columns { width: 652px; }
- .container .fifteen.columns { width: 700px; }
- .container .sixteen.columns { width: 748px; }
-
- .container .one-third.column { width: 236px; }
- .container .two-thirds.column { width: 492px; }
-
- /* Offsets */
- .container .offset-by-one { padding-left: 48px; }
- .container .offset-by-two { padding-left: 96px; }
- .container .offset-by-three { padding-left: 144px; }
- .container .offset-by-four { padding-left: 192px; }
- .container .offset-by-five { padding-left: 240px; }
- .container .offset-by-six { padding-left: 288px; }
- .container .offset-by-seven { padding-left: 336px; }
- .container .offset-by-eight { padding-left: 384px; }
- .container .offset-by-nine { padding-left: 432px; }
- .container .offset-by-ten { padding-left: 480px; }
- .container .offset-by-eleven { padding-left: 528px; }
- .container .offset-by-twelve { padding-left: 576px; }
- .container .offset-by-thirteen { padding-left: 624px; }
- .container .offset-by-fourteen { padding-left: 672px; }
- .container .offset-by-fifteen { padding-left: 720px; }
- }
-
-
-/* #Mobile (Portrait)
-================================================== */
-
- /* Note: Design for a width of 320px */
-
- @media only screen and (max-width: 767px) {
- .container { width: 300px; }
- .container .columns,
- .container .column { margin: 0; }
-
- .container .one.column,
- .container .one.columns,
- .container .two.columns,
- .container .three.columns,
- .container .four.columns,
- .container .five.columns,
- .container .six.columns,
- .container .seven.columns,
- .container .eight.columns,
- .container .nine.columns,
- .container .ten.columns,
- .container .eleven.columns,
- .container .twelve.columns,
- .container .thirteen.columns,
- .container .fourteen.columns,
- .container .fifteen.columns,
- .container .sixteen.columns,
- .container .one-third.column,
- .container .two-thirds.column { width: 300px; }
-
- /* Offsets */
- .container .offset-by-one,
- .container .offset-by-two,
- .container .offset-by-three,
- .container .offset-by-four,
- .container .offset-by-five,
- .container .offset-by-six,
- .container .offset-by-seven,
- .container .offset-by-eight,
- .container .offset-by-nine,
- .container .offset-by-ten,
- .container .offset-by-eleven,
- .container .offset-by-twelve,
- .container .offset-by-thirteen,
- .container .offset-by-fourteen,
- .container .offset-by-fifteen { padding-left: 0; }
-
- }
-
-
-/* #Mobile (Landscape)
-================================================== */
-
- /* Note: Design for a width of 480px */
-
- @media only screen and (min-width: 480px) and (max-width: 767px) {
- .container { width: 420px; }
- .container .columns,
- .container .column { margin: 0; }
-
- .container .one.column,
- .container .one.columns,
- .container .two.columns,
- .container .three.columns,
- .container .four.columns,
- .container .five.columns,
- .container .six.columns,
- .container .seven.columns,
- .container .eight.columns,
- .container .nine.columns,
- .container .ten.columns,
- .container .eleven.columns,
- .container .twelve.columns,
- .container .thirteen.columns,
- .container .fourteen.columns,
- .container .fifteen.columns,
- .container .sixteen.columns,
- .container .one-third.column,
- .container .two-thirds.column { width: 420px; }
- }
-
-
-/* #Clearing
-================================================== */
-
- /* Self Clearing Goodness */
- .container:after { content: "\0020"; display: block; height: 0; clear: both; visibility: hidden; }
-
- /* Use clearfix class on parent to clear nested columns,
- or wrap each row of columns in a */
- .clearfix:before,
- .clearfix:after,
- .row:before,
- .row:after {
- content: '\0020';
- display: block;
- overflow: hidden;
- visibility: hidden;
- width: 0;
- height: 0; }
- .row:after,
- .clearfix:after {
- clear: both; }
- .row,
- .clearfix {
- zoom: 1; }
-
- /* You can also use a
to clear columns */
- .clear {
- clear: both;
- display: block;
- overflow: hidden;
- visibility: hidden;
- width: 0;
- height: 0;
- }
diff --git a/rubyonrails/notejam/app/assets/stylesheets/style.css b/rubyonrails/notejam/app/assets/stylesheets/style.css
deleted file mode 100644
index b800e615d..000000000
--- a/rubyonrails/notejam/app/assets/stylesheets/style.css
+++ /dev/null
@@ -1,350 +0,0 @@
-/*
-* Skeleton V1.0.3
-* Copyright 2011, Dave Gamache
-* www.getskeleton.com
-* Free to use under the MIT license.
-* http://www.opensource.org/licenses/mit-license.php
-* 7/17/2011
-*/
-
-
-/* Documentation Styles
-================================================== */
- div.container {
- padding-top: 40px; }
-
- /* Doc nav */
- nav {
- width: 160px; }
- #logo, .bold-header {
- margin-bottom: 30px;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- letter-spacing: -1px;
- color: #555;
- font-weight: bold; }
- .bold-header span {
- font-weight: normal;
- font-size: 23px;
- }
- .bold-header a.header {
- text-decoration: none;
- color: inherit;
- }
- .bold-header span.jam {
- font-size: 46px;
- line-height: 50px;
- }
- nav ul {
- float: left; }
- nav ul li {
- display: block;
- margin-bottom: 10px; }
- nav ul li a,
- nav ul li a:visited,
- nav ul li a:active {
- font-size: 14px;
- color: #555;
- text-decoration: none;
- font-weight: bold; }
- nav ul li a:hover,
- nav ul li a:focus {
- color: #222; }
- header h1 {
- font-size: 52px;
- line-height: 61px;
- letter-spacing: -1px;
- font-weight: normal;
- font-family: "Georgia", "Times New Roman", Helvetica, Arial, sans-serif; }
- hr.large {
- border: none;
- height: 8px;
- background: #ebebeb;
- margin: 50px 0; }
- div.doc-section {
- margin: 30px 0; }
-
- #whatAndWhy .row {
- padding: 30px 0 0; }
-
- #typography blockquote {
- margin-top: 20px; }
-
- .hidden-code a {
- font-size: 12px;
- color: #999; }
- .hidden-code>div {
- display: none; }
-
-
- /* Grid */
- #grid .column,
- #grid .columns {
- background: #ddd;
- height: 25px;
- line-height: 25px;
- margin-bottom: 10px;
- text-align: center;
- text-transform: uppercase;
- color: #555;
- font-size: 12px;
- font-weight: bold;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px; }
- #grid .column:hover,
- #grid .columns:hover {
- background: #bbb;
- color: #333; }
- #grid .example-grid { overflow: hidden; }
-
- .post-button-note,
- .post-button-note a {
- font-size: 11px;
- color: #999; }
-
- #examples .four.columns a {
- text-decoration: none;
- }
- #examples .four.columns a:hover {
- text-decoration: underline;
- }
-
-
- .resize {
- position: fixed;
- bottom: 0;
- right: 0;
- height: 80px;
- width: 80px;
- background: url(images/resize.png); }
-
-
- img {
- max-width: 100%;
- height: auto; }
-
- .gist-meta { display: none !important;}
-
- ul ul ul li { margin-bottom: 3px; }
-
- .twitter-share-button { margin-bottom: -18px; }
-
-.carbonad,
-.carbonad-image,
-.carbonad-text,
-.carbonad-tag {
- background: none !important;
- border: none !important;
- margin-left: 0 !important;
-}
-.carbonad-tag {
- margin-top: 6px !important;
- padding-top: 0 !important;
-}
-.carbonad-text {
- height: auto !important;
-}
-.carbonad-image {
- margin-top: 0 !important;
-}
-
-.hidden-text {
- font-size: 12px;
- color: #999;
-}
-
-td.date, th.date {
- text-align: right;
-}
-
-td.date {
- font-style: italic;
-}
-
-form.note input[type="text"], form.note textarea {
- width: 100%;
-}
-
-form hr {
- width: 218px;
- margin: 10px 0px;
-}
-
-form.note textarea {
- height: 250px;
-}
-
-div.content-area {
- min-height: 600px;
-}
-
-hr.footer {
- margin-bottom: 10px;
-}
-
-div.footer {
- margin-bottom: 10px;
- text-align: center;
- font-size: 12px;
-}
-
-form.sign-in {
- margin: 50px 0 0 0;
-}
-
-.sort_arrow {
- text-decoration: none;
-}
-
-.sort_arrow:hover {
- text-decoration: none;
- color: red;
-}
-
-div.sign-in-out-block {
- position: absolute;
- right: 14px;
- top: 8px;
- font-size: 12px;
-}
-
-div.sign-in-out-block a {
- /*text-decoration: none;*/
-}
-
-a.small-red {
- color: red;
- font-size: 12px;
-}
-
-table.notes {
- margin: 0 0 20px 0;
-}
-
-table.notes th.note {
- width: 72%;
-}
-
-table.notes td.pad {
- color: grey;
-}
-
-table.notes td.pad a {
- color: grey;
- text-decoration: underline;
- font-style: normal;
-}
-
-
-table.notes td.pad a:hover {
- color: black;
-}
-
-p.empty {
- color: grey;
- font-style: italic;
-}
-
-a.delete-note {
- float: right;
- font-size: 12px;
- color: red;
-}
-
-.red, input.red {
- color: red !important;
-}
-
-ul.errorlist, ul.errors {
- margin: -18px 0 0 0;
-}
-
-ul.errorlist li, ul.errors li {
- color: red;
-}
-
-.alert-area {
- text-align: center;
-}
-
-.alert {
- padding: 5px 8px;
- margin: 0 0 12px 0;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
-}
-
-.alert-success {
- color: #468847;
- background-color: #dff0d8;
- border: 1px solid #d6e9c6;
-}
-
-.alert-error {
- color: #b94a48;
- background-color: #f2dede;
- border: 1px solid #eed3d7;
-}
-
- /* Mobile */
- @media only screen and (max-width: 767px) {
- header h1 { font-size: 34px; line-height: 37px; }
- nav { position: relative; }
- nav ul,
- .carbonad {
- display: none;
- }
- #logo { text-align: left; }
- #examples .four.columns {
- padding-top: 30px;
- }
- }
-
- /* Mobile Landscape */
- @media only screen and (min-width: 480px) and (max-width: 767px) {
- nav ul {
- display: none;
- }
- }
-
- /* Non 960 */
- @media only screen and (max-width: 959px) {
- #logo {
- font-size: 21px;
- margin-bottom: 15px; }
- nav .button {
- padding: 9px 20px 11px; }
- }
-
- /* iPad Portrait/Browser */
- @media only screen and (min-width: 768px) and (max-width: 959px) {
- nav {
- width: 124px; }
- }
-
- /* Mobile/Browser */
- @media only screen and (max-width: 767px) {}
-
- /* Mobile Landscape/Browser */
- @media only screen and (min-width: 480px) and (max-width: 767px) {}
-
- /* Anything smaller than standard 960 */
- @media only screen and (max-width: 959px) {}
-
-
- /* iPad Portrait Only */
- @media only screen and (min-width: 768px) and (max-width: 959px) and (max-device-width: 1000px) {}
-
- /* Mobile Only */
- @media only screen and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Mobile Landscape Only */
- @media only screen and (min-width: 480px) and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Anything smaller than standard 960 on a device */
- @media only screen and (max-width: 959px) and (max-device-width: 1000px) {
- .resize { display: none; }
- }
-
-
diff --git a/rubyonrails/notejam/app/assets/stylesheets/tables.css b/rubyonrails/notejam/app/assets/stylesheets/tables.css
deleted file mode 100644
index fb4441935..000000000
--- a/rubyonrails/notejam/app/assets/stylesheets/tables.css
+++ /dev/null
@@ -1,45 +0,0 @@
-table {
- width: 100%;
- border-collapse: collapse;
-}
-
-table th, table td {
- padding: 10px 10px 9px;
- font-size: 13px;
- line-height: 18px;
- text-align: left;
-}
-
-table td {
- vertical-align: top;
- border-top: solid 1px #ddd;
-}
-
-table th {
- padding-top: 9px;
- font-weight: bold;
- vertical-align: middle;
-}
-
-table.condensed th, table.condensed td {
- padding: 5px 5px 4px;
-}
-
-table.bordered {
- border-collapse: separate;
- border: solid 1px #ddd;
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
-}
-
-table.bordered th + th,
-table.bordered th + td,
-table.bordered td + td {
- border-left: solid 1px #ddd;
-}
-
-.zebra-striped tbody tr:nth-child(odd) td,
-.zebra-striped tbody tr:nth-child(odd) th {
- background: #f5f5f5;
-}
diff --git a/rubyonrails/notejam/app/assets/stylesheets/user.css.scss b/rubyonrails/notejam/app/assets/stylesheets/user.css.scss
deleted file mode 100644
index 7c5eca9cc..000000000
--- a/rubyonrails/notejam/app/assets/stylesheets/user.css.scss
+++ /dev/null
@@ -1,3 +0,0 @@
-// Place all the styles related to the user controller here.
-// They will automatically be included in application.css.
-// You can use Sass (SCSS) here: http://sass-lang.com/
diff --git a/rubyonrails/notejam/app/controllers/application_controller.rb b/rubyonrails/notejam/app/controllers/application_controller.rb
deleted file mode 100644
index 30764733e..000000000
--- a/rubyonrails/notejam/app/controllers/application_controller.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-class ApplicationController < ActionController::Base
- # Prevent CSRF attacks by raising an exception.
- # For APIs, you may want to use :null_session instead.
- protect_from_forgery with: :exception
-
- rescue_from ActiveRecord::RecordNotFound, with: :not_found
-
- def authenticate_user
- if session[:user_id]
- return true
- else
- redirect_to signin_path, flash: { success: 'Please sign in' }
- false
- end
- end
-
- private
-
- def not_found
- render nothing: true, status: :not_found
- end
-
- def order_param
- order = params[:order] || '-updated_at'
- { 'name' => 'name ASC',
- '-name' => 'name DESC',
- 'updated_at' => 'updated_at ASC',
- '-updated_at' => 'updated_at DESC' }[order]
- end
-
- def current_user
- @current_user ||= User.find(session[:user_id]) if session[:user_id]
- end
- helper_method :current_user
-end
diff --git a/rubyonrails/notejam/app/controllers/notes_controller.rb b/rubyonrails/notejam/app/controllers/notes_controller.rb
deleted file mode 100644
index 83f9fd61a..000000000
--- a/rubyonrails/notejam/app/controllers/notes_controller.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-class NotesController < ApplicationController
- before_action :authenticate_user
- def index
- @notes = current_user.notes.order(order_param)
- end
-
- def edit
- @note = current_user.notes.find(params[:id])
- @current_name = @note.name
- if params[:note]
- # @TODO weird solution
- if params[:note][:pad_id] != '0'
- current_user.pads.find(params[:note][:pad_id])
- end
- if @note.update(note_params)
- redirect_to note_path(id: @note.id), flash: { success: 'Note is successfully updated' }
- end
- end
- end
-
- def delete
- @note = current_user.notes.find(params[:id])
- if request.post?
- @note.destroy
- redirect_to notes_path, flash: { success: 'Note is successfully deleted' }
- end
- end
-
- def create
- if params[:note]
- # @TODO weird solution
- if params[:note][:pad_id] != '0'
- current_user.pads.find(params[:note][:pad_id])
- end
- @note = current_user.notes.create(note_params)
- if @note.valid?
- redirect_to notes_path, flash: { success: 'Note is successfully created' }
- end
- end
- end
-
- def show
- @note = current_user.notes.find(params[:id])
- end
-
- private
-
- def note_params
- params.require(:note).permit(:name, :text, :pad_id)
- end
-end
diff --git a/rubyonrails/notejam/app/controllers/pads_controller.rb b/rubyonrails/notejam/app/controllers/pads_controller.rb
deleted file mode 100644
index 71eb01e90..000000000
--- a/rubyonrails/notejam/app/controllers/pads_controller.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-class PadsController < ApplicationController
- before_action :authenticate_user
- def create
- if params[:pad]
- @pad = Pad.new(pad_params.merge(user: current_user))
- if @pad.save
- redirect_to url_for(:notes), flash: { success: 'Pad is successfully created' }
- end
- end
- end
-
- def edit
- @pad = current_user.pads.find(params[:id])
- @current_name = @pad.name
- if params[:pad]
- if @pad.update(pad_params)
- redirect_to pad_path(id: @pad.id), flash: { success: 'Pad is successfully updated' }
- end
- end
- end
-
- def delete
- @pad = current_user.pads.find(params[:id])
- if request.post?
- @pad.destroy
- redirect_to notes_path, flash: { success: 'Pad is successfully deleted' }
- end
- end
-
- def show
- @pad = current_user.pads.find(params[:id])
- @notes = @pad.notes.order(order_param)
- end
-
- private
-
- def pad_params
- params.require(:pad).permit(:name)
- end
-end
diff --git a/rubyonrails/notejam/app/controllers/users_controller.rb b/rubyonrails/notejam/app/controllers/users_controller.rb
deleted file mode 100644
index f832618c3..000000000
--- a/rubyonrails/notejam/app/controllers/users_controller.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-class UsersController < ApplicationController
- before_action :authenticate_user, only: [:settings]
-
- def signup
- if params[:user]
- @user = User.new(user_params)
- if @user.valid?
- @user.save
- redirect_to signin_path, flash: { success: 'Account is created. Now you can sign in.' }
- end
- end
- end
-
- def signin
- if request.post?
- user = User.find_by_email(params[:email])
- if user && user.authenticate(params[:password])
- session[:user_id] = user.id
- redirect_to notes_path, flash: { success: 'Successfully signed in' }
- else
- flash.now[:error] = 'Invalid email or password'
- end
- end
- end
-
- def forgot_password
- if request.post?
- user = User.find_by_email(params[:email])
- if user
- new_password = generate_password
- user.password = new_password
- user.password_confirmation = new_password
- user.save
- UserMailer.send_new_password(user, new_password).deliver
- redirect_to signin_path, flash: { success: 'New password sent to your mail' }
- return
- end
- flash.now[:error] = 'No user with given email found'
- end
- end
-
- def signout
- session[:user_id] = nil
- redirect_to signin_path
- end
-
- def settings
- @user = current_user
- if params[:user]
- unless current_user.authenticate(params[:current_password])
- flash.now[:error] = 'Invalid current password'
- return
- end
- @user.password = user_params[:password]
- @user.password_confirmation = user_params[:password_confirmation]
- if @user.valid?
- @user.save
- redirect_to settings_path, flash: { success: 'Password is successfully changed' }
- end
- end
- end
-
- private
-
- def user_params
- params.require(:user).permit(:email, :password, :password_confirmation, :current_password)
- end
-
- def generate_password
- # weak password generation
- ('a'..'z').to_a.sample(8).join
- end
-end
diff --git a/rubyonrails/notejam/app/helpers/application_helper.rb b/rubyonrails/notejam/app/helpers/application_helper.rb
deleted file mode 100644
index 726dd96a5..000000000
--- a/rubyonrails/notejam/app/helpers/application_helper.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-module ApplicationHelper
- def field_errors(field, model)
- if model && model.errors[field].any?
- [
- "
",
- model.errors[field].map { |message| "#{field} #{message} " }.join,
- ' '
- ].join.html_safe
- end
- end
-end
diff --git a/rubyonrails/notejam/app/helpers/note_helper.rb b/rubyonrails/notejam/app/helpers/note_helper.rb
deleted file mode 100644
index 94decd583..000000000
--- a/rubyonrails/notejam/app/helpers/note_helper.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-module NoteHelper
- def smart_date(datetime)
- diff = Date.today - datetime.to_date
- days = diff.to_i
- if days == 0
- 'Today at ' + datetime.strftime('%H:%M')
- elsif days == 1
- 'Yesterday'
- elsif days > 1 && days <= 7
- days.to_s + ' days ago'
- else
- datetime.strftime('%d %b %Y')
- end
- end
-end
diff --git a/rubyonrails/notejam/app/helpers/pad_helper.rb b/rubyonrails/notejam/app/helpers/pad_helper.rb
deleted file mode 100644
index efcff476c..000000000
--- a/rubyonrails/notejam/app/helpers/pad_helper.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-module PadHelper
-end
diff --git a/rubyonrails/notejam/app/helpers/user_helper.rb b/rubyonrails/notejam/app/helpers/user_helper.rb
deleted file mode 100644
index 0147c3fe6..000000000
--- a/rubyonrails/notejam/app/helpers/user_helper.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-module UserHelper
-end
diff --git a/rubyonrails/notejam/app/mailers/.keep b/rubyonrails/notejam/app/mailers/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/rubyonrails/notejam/app/mailers/user_mailer.rb b/rubyonrails/notejam/app/mailers/user_mailer.rb
deleted file mode 100644
index e6d5775e1..000000000
--- a/rubyonrails/notejam/app/mailers/user_mailer.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class UserMailer < ActionMailer::Base
- default from: 'noreply@notejamapp.com'
-
- def send_new_password(user, password)
- @user = user
- @password = password
- mail(to: @user.email, subject: 'New notejam password')
- end
-end
diff --git a/rubyonrails/notejam/app/models/.keep b/rubyonrails/notejam/app/models/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/rubyonrails/notejam/app/models/note.rb b/rubyonrails/notejam/app/models/note.rb
deleted file mode 100644
index 24cfe8088..000000000
--- a/rubyonrails/notejam/app/models/note.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-class Note < ActiveRecord::Base
- belongs_to :pad
- belongs_to :user
- validates :name, presence: true
- validates :text, presence: true
-end
diff --git a/rubyonrails/notejam/app/models/pad.rb b/rubyonrails/notejam/app/models/pad.rb
deleted file mode 100644
index 86493b560..000000000
--- a/rubyonrails/notejam/app/models/pad.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class Pad < ActiveRecord::Base
- belongs_to :user
- has_many :notes
- validates :name, presence: true
-end
diff --git a/rubyonrails/notejam/app/models/user.rb b/rubyonrails/notejam/app/models/user.rb
deleted file mode 100644
index a1b1131c2..000000000
--- a/rubyonrails/notejam/app/models/user.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class User < ActiveRecord::Base
- has_many :pads
- has_many :notes
- validates :email, presence: true,
- format: { with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i },
- uniqueness: true
- validates :password, presence: true
- has_secure_password
-end
diff --git a/rubyonrails/notejam/app/views/layouts/application.html.erb b/rubyonrails/notejam/app/views/layouts/application.html.erb
deleted file mode 100644
index 825ef02d0..000000000
--- a/rubyonrails/notejam/app/views/layouts/application.html.erb
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-
-
-
-
-
-
-
-
<%= yield(:page_title) %>
-
-
-
-
-
-
-
- <%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
-
-
- <%= csrf_meta_tags %>
-
-
-
-
-
-
-
- <% if current_user %>
- <%= current_user.email %>: <%= link_to "Account Settings", settings_path %>
Sign out
- <% else %>
-
Sign In Sign Up
- <% end %>
-
-
-
-
-
- <% if content_for?(:pad_menu) %>
- <%= yield(:pad_menu) %>
- <% else %>
-
-
My pads
-
- <% if current_user && current_user.pads.count.nonzero? %>
-
- <% current_user.pads.each do |pad| -%>
- <%= link_to pad.name, pad_path(:id => pad.id) %>
- <% end -%>
-
- <% else %>
- No pads
- <% end %>
-
- New pad
-
-
- <% end %>
-
-
- <% flash.each do |name, msg| -%>
-
<%= msg %>
- <% end -%>
-
- <%= content_for?(:content) ? yield(:content) : yield %>
-
-
-
-
-
-
-
diff --git a/rubyonrails/notejam/app/views/layouts/users.html.erb b/rubyonrails/notejam/app/views/layouts/users.html.erb
deleted file mode 100644
index 9115a8021..000000000
--- a/rubyonrails/notejam/app/views/layouts/users.html.erb
+++ /dev/null
@@ -1,3 +0,0 @@
-<% content_for :content_class do %>sixteen<% end %>
-<% content_for :pad_menu do %><% end %>
-<%= render template: "layouts/application" %>
diff --git a/rubyonrails/notejam/app/views/notes/create.html.erb b/rubyonrails/notejam/app/views/notes/create.html.erb
deleted file mode 100644
index d3e5e5066..000000000
--- a/rubyonrails/notejam/app/views/notes/create.html.erb
+++ /dev/null
@@ -1,16 +0,0 @@
-<% content_for :page_title do %>New note<% end %>
-
-<%= form_for :note, :html => {:class => "note"} do |f| %>
- <%= f.label :name %>
- <%= f.text_field :name %>
- <%= field_errors :name, @note %>
-
- <%= f.label :text %>
- <%= f.text_area :text %>
- <%= field_errors :text, @note %>
-
- <%= f.label :pad %>
- <%= f.select(:pad_id, [['---------', 0]] + current_user.pads.collect { |p| [p.name, p.id]}, :selected => params[:pad]) %>
-
- <%= f.submit "Save" %>
-<% end %>
diff --git a/rubyonrails/notejam/app/views/notes/delete.html.erb b/rubyonrails/notejam/app/views/notes/delete.html.erb
deleted file mode 100644
index 835905775..000000000
--- a/rubyonrails/notejam/app/views/notes/delete.html.erb
+++ /dev/null
@@ -1,7 +0,0 @@
-<% content_for :page_title do %><%= @note.name %><% end %>
-
-
Are you sure you want to delete <%= @note.name %>?
-<%= form_for :note do |f| %>
- <%= f.submit "Yes, I want to delete this note", :class => "red" %>
- <%= link_to "Cancel", notes_path %>
-<% end %>
diff --git a/rubyonrails/notejam/app/views/notes/edit.html.erb b/rubyonrails/notejam/app/views/notes/edit.html.erb
deleted file mode 100644
index cec61c667..000000000
--- a/rubyonrails/notejam/app/views/notes/edit.html.erb
+++ /dev/null
@@ -1,16 +0,0 @@
-<% content_for :page_title do %><%= @current_name %><% end %>
-
-<%= form_for :note, :html => {:class => "note"} do |f| %>
- <%= f.label :name %>
- <%= f.text_field :name %>
- <%= field_errors :name, @note %>
-
- <%= f.label :text %>
- <%= f.text_area :text %>
- <%= field_errors :text, @note %>
-
- <%= f.label :pad %>
- <%= f.select(:pad_id, [['---------', 0]] + current_user.pads.collect { |p| [p.name, p.id]}) %>
-
- <%= f.submit "Save" %>
-<% end %>
diff --git a/rubyonrails/notejam/app/views/notes/index.html.erb b/rubyonrails/notejam/app/views/notes/index.html.erb
deleted file mode 100644
index 5eae06713..000000000
--- a/rubyonrails/notejam/app/views/notes/index.html.erb
+++ /dev/null
@@ -1,26 +0,0 @@
-<% content_for :page_title do %>All notes (<%= @notes.count %>)<% end %>
-<% if @notes.count.nonzero? %>
-
-<% else %>
-
Create your first note.
-<% end %>
-<%= link_to "New note", create_note_path, :class => "button" %>
diff --git a/rubyonrails/notejam/app/views/notes/show.html.erb b/rubyonrails/notejam/app/views/notes/show.html.erb
deleted file mode 100644
index a16b0c0f6..000000000
--- a/rubyonrails/notejam/app/views/notes/show.html.erb
+++ /dev/null
@@ -1,10 +0,0 @@
-<% content_for :page_title do %><%= @note.name %><% end %>
-
-
Last edited: <%= smart_date @note.updated_at %>
-
-
- <%= @note.text %>
-
-
-<%= link_to "Edit", edit_note_path(:id => @note.id), {:class => "button"} %>
-<%= link_to "Delete", delete_note_path(:id => @note.id), {:class => "delete-note"} %>
diff --git a/rubyonrails/notejam/app/views/pads/create.html.erb b/rubyonrails/notejam/app/views/pads/create.html.erb
deleted file mode 100644
index 804483b20..000000000
--- a/rubyonrails/notejam/app/views/pads/create.html.erb
+++ /dev/null
@@ -1,9 +0,0 @@
-<% content_for :page_title do %>New pad<% end %>
-
-<%= form_for :pad do |f| %>
- <%= f.label :name %>
- <%= f.text_field :name %>
- <%= field_errors :name, @pad %>
-
- <%= f.submit "Create" %>
-<% end %>
diff --git a/rubyonrails/notejam/app/views/pads/delete.html.erb b/rubyonrails/notejam/app/views/pads/delete.html.erb
deleted file mode 100644
index 5ac79bdfb..000000000
--- a/rubyonrails/notejam/app/views/pads/delete.html.erb
+++ /dev/null
@@ -1,7 +0,0 @@
-<% content_for :page_title do %><%= @pad.name %><% end %>
-
-
Are you sure you want to delete <%= @pad.name %>?
-<%= form_for :pad do |f| %>
- <%= f.submit "Yes, I want to delete this pad", :class => "red" %>
- <%= link_to "Cancel", notes_path %>
-<% end %>
diff --git a/rubyonrails/notejam/app/views/pads/edit.html.erb b/rubyonrails/notejam/app/views/pads/edit.html.erb
deleted file mode 100644
index 0bd37d7a4..000000000
--- a/rubyonrails/notejam/app/views/pads/edit.html.erb
+++ /dev/null
@@ -1,9 +0,0 @@
-<% content_for :page_title do %><%= @current_name %><% end %>
-
-<%= form_for :pad do |f| %>
- <%= f.label :name %>
- <%= f.text_field :name %>
- <%= field_errors :name, @pad %>
-
- <%= f.submit "Save" %>
-<% end %>
diff --git a/rubyonrails/notejam/app/views/pads/show.html.erb b/rubyonrails/notejam/app/views/pads/show.html.erb
deleted file mode 100644
index 40ba2cb5c..000000000
--- a/rubyonrails/notejam/app/views/pads/show.html.erb
+++ /dev/null
@@ -1,19 +0,0 @@
-<% content_for :page_title do %><%= @pad.name %> (<%= @notes.count %>)<% end %>
-<% if @notes.count.nonzero? %>
-
-<% else %>
-
Create first note in the pad.
-<% end %>
-<%= link_to "New note", create_note_path + "?pad=" + @pad.id.to_s, :class => "button" %>
-
diff --git a/rubyonrails/notejam/app/views/user_mailer/send_new_password.text.erb b/rubyonrails/notejam/app/views/user_mailer/send_new_password.text.erb
deleted file mode 100644
index 525a45224..000000000
--- a/rubyonrails/notejam/app/views/user_mailer/send_new_password.text.erb
+++ /dev/null
@@ -1,4 +0,0 @@
-Hi, <%= @user.email %>
-=========================================
-
-Your new password is <%= @password %>
diff --git a/rubyonrails/notejam/app/views/users/forgot_password.html.erb b/rubyonrails/notejam/app/views/users/forgot_password.html.erb
deleted file mode 100644
index bdbaae1b1..000000000
--- a/rubyonrails/notejam/app/views/users/forgot_password.html.erb
+++ /dev/null
@@ -1,9 +0,0 @@
-<% content_for :page_title do %>Forgot Password?<% end %>
-
-<%= form_tag({}, {:class => "offset-by-six sign-in"}) do %>
- <%= label_tag :email %>
- <%= text_field_tag :email, nil, :required => true %>
-
- <%= submit_tag "Generate password" %>
-<% end %>
-
diff --git a/rubyonrails/notejam/app/views/users/settings.html.erb b/rubyonrails/notejam/app/views/users/settings.html.erb
deleted file mode 100644
index ef799d8b9..000000000
--- a/rubyonrails/notejam/app/views/users/settings.html.erb
+++ /dev/null
@@ -1,16 +0,0 @@
-<% content_for :page_title do %>Account Settings<% end %>
-
-<%= form_for :user, :html => {:class => "offset-by-six sign-in"} do |f| %>
- <%= label_tag :current_password %>
- <%= password_field_tag :current_password %>
-
- <%= f.label "New password" %>
- <%= f.password_field :password %>
- <%= field_errors :password, @user %>
-
- <%= f.label :password_confirmation %>
- <%= f.password_field :password_confirmation %>
- <%= field_errors :password_confirmation, @user %>
-
- <%= f.submit "Save" %>
-<% end %>
diff --git a/rubyonrails/notejam/app/views/users/signin.html.erb b/rubyonrails/notejam/app/views/users/signin.html.erb
deleted file mode 100644
index 500a3f651..000000000
--- a/rubyonrails/notejam/app/views/users/signin.html.erb
+++ /dev/null
@@ -1,13 +0,0 @@
-<% content_for :page_title do %>Sign In<% end %>
-
-<%= form_tag({}, {:class => "offset-by-six sign-in"}) do %>
- <%= label_tag :email %>
- <%= text_field_tag :email, nil, :required => true %>
-
- <%= label_tag :password %>
- <%= password_field_tag :password %>
-
- <%= submit_tag "Sign In" %> or
Sign up
-
-
Forgot password?
-<% end %>
diff --git a/rubyonrails/notejam/app/views/users/signup.html.erb b/rubyonrails/notejam/app/views/users/signup.html.erb
deleted file mode 100644
index baa77f6be..000000000
--- a/rubyonrails/notejam/app/views/users/signup.html.erb
+++ /dev/null
@@ -1,17 +0,0 @@
-<% content_for :page_title do %>Sign Up<% end %>
-
-<%= form_for :user, :html => {:class => "offset-by-six sign-in"} do |f| %>
- <%= f.label :email %>
- <%= f.text_field :email %>
- <%= field_errors :email, @user %>
-
- <%= f.label :password %>
- <%= f.password_field :password %>
- <%= field_errors :password, @user %>
-
- <%= f.label :password_confirmation %>
- <%= f.password_field :password_confirmation %>
- <%= field_errors :password_confirmation, @user %>
-
- <%= f.submit "Sign Up" %> or
Sign in
-<% end %>
diff --git a/rubyonrails/notejam/bin/bundle b/rubyonrails/notejam/bin/bundle
deleted file mode 100755
index 66e9889e8..000000000
--- a/rubyonrails/notejam/bin/bundle
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/env ruby
-ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
-load Gem.bin_path('bundler', 'bundle')
diff --git a/rubyonrails/notejam/bin/rails b/rubyonrails/notejam/bin/rails
deleted file mode 100755
index 728cd85aa..000000000
--- a/rubyonrails/notejam/bin/rails
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env ruby
-APP_PATH = File.expand_path('../../config/application', __FILE__)
-require_relative '../config/boot'
-require 'rails/commands'
diff --git a/rubyonrails/notejam/bin/rake b/rubyonrails/notejam/bin/rake
deleted file mode 100755
index 17240489f..000000000
--- a/rubyonrails/notejam/bin/rake
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env ruby
-require_relative '../config/boot'
-require 'rake'
-Rake.application.run
diff --git a/rubyonrails/notejam/config.ru b/rubyonrails/notejam/config.ru
deleted file mode 100644
index 5bc2a619e..000000000
--- a/rubyonrails/notejam/config.ru
+++ /dev/null
@@ -1,4 +0,0 @@
-# This file is used by Rack-based servers to start the application.
-
-require ::File.expand_path('../config/environment', __FILE__)
-run Rails.application
diff --git a/rubyonrails/notejam/config/application.rb b/rubyonrails/notejam/config/application.rb
deleted file mode 100644
index 0054d0587..000000000
--- a/rubyonrails/notejam/config/application.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-require File.expand_path('../boot', __FILE__)
-
-require 'rails/all'
-
-# Require the gems listed in Gemfile, including any gems
-# you've limited to :test, :development, or :production.
-Bundler.require(*Rails.groups)
-
-module Notejam
- class Application < Rails::Application
- # Settings in config/environments/* take precedence over those specified here.
- # Application configuration should go into files in config/initializers
- # -- all .rb files in that directory are automatically loaded.
-
- # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
- # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
- # config.time_zone = 'Central Time (US & Canada)'
-
- # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
- # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
- # config.i18n.default_locale = :de
-
- # Do not swallow errors in after_commit/after_rollback callbacks.
- config.active_record.raise_in_transactional_callbacks = true
- end
-end
diff --git a/rubyonrails/notejam/config/boot.rb b/rubyonrails/notejam/config/boot.rb
deleted file mode 100644
index 6b750f00b..000000000
--- a/rubyonrails/notejam/config/boot.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
-
-require 'bundler/setup' # Set up gems listed in the Gemfile.
diff --git a/rubyonrails/notejam/config/database.yml b/rubyonrails/notejam/config/database.yml
deleted file mode 100644
index 3f14fb314..000000000
--- a/rubyonrails/notejam/config/database.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-# SQLite version 3.x
-# gem install sqlite3
-#
-# Ensure the SQLite 3 gem is defined in your Gemfile
-# gem 'sqlite3'
-development:
- adapter: sqlite3
- database: notejam.db
- pool: 5
- timeout: 5000
-
-# Warning: The database defined as "test" will be erased and
-# re-generated from your development database when you run "rake".
-# Do not set this db to the same as development or production.
-test:
- adapter: sqlite3
- database: db/test.sqlite3
- pool: 5
- timeout: 5000
-
-production:
- adapter: sqlite3
- database: db/production.sqlite3
- pool: 5
- timeout: 5000
diff --git a/rubyonrails/notejam/config/environment.rb b/rubyonrails/notejam/config/environment.rb
deleted file mode 100644
index ee8d90dc6..000000000
--- a/rubyonrails/notejam/config/environment.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-# Load the Rails application.
-require File.expand_path('../application', __FILE__)
-
-# Initialize the Rails application.
-Rails.application.initialize!
diff --git a/rubyonrails/notejam/config/environments/development.rb b/rubyonrails/notejam/config/environments/development.rb
deleted file mode 100644
index b55e2144b..000000000
--- a/rubyonrails/notejam/config/environments/development.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-Rails.application.configure do
- # Settings specified here will take precedence over those in config/application.rb.
-
- # In the development environment your application's code is reloaded on
- # every request. This slows down response time but is perfect for development
- # since you don't have to restart the web server when you make code changes.
- config.cache_classes = false
-
- # Do not eager load code on boot.
- config.eager_load = false
-
- # Show full error reports and disable caching.
- config.consider_all_requests_local = true
- config.action_controller.perform_caching = false
-
- # Don't care if the mailer can't send.
- config.action_mailer.raise_delivery_errors = false
-
- # Print deprecation notices to the Rails logger.
- config.active_support.deprecation = :log
-
- # Raise an error on page load if there are pending migrations.
- config.active_record.migration_error = :page_load
-
- # Debug mode disables concatenation and preprocessing of assets.
- # This option may cause significant delays in view rendering with a large
- # number of complex assets.
- config.assets.debug = true
-
- # Asset digests allow you to set far-future HTTP expiration dates on all assets,
- # yet still be able to expire them through the digest params.
- config.assets.digest = true
-
- # Adds additional error checking when serving assets at runtime.
- # Checks for improperly declared sprockets dependencies.
- # Raises helpful error messages.
- config.assets.raise_runtime_errors = true
-
- # Raises error for missing translations
- # config.action_view.raise_on_missing_translations = true
-end
diff --git a/rubyonrails/notejam/config/environments/production.rb b/rubyonrails/notejam/config/environments/production.rb
deleted file mode 100644
index 5c1b32e48..000000000
--- a/rubyonrails/notejam/config/environments/production.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-Rails.application.configure do
- # Settings specified here will take precedence over those in config/application.rb.
-
- # Code is not reloaded between requests.
- config.cache_classes = true
-
- # Eager load code on boot. This eager loads most of Rails and
- # your application in memory, allowing both threaded web servers
- # and those relying on copy on write to perform better.
- # Rake tasks automatically ignore this option for performance.
- config.eager_load = true
-
- # Full error reports are disabled and caching is turned on.
- config.consider_all_requests_local = false
- config.action_controller.perform_caching = true
-
- # Enable Rack::Cache to put a simple HTTP cache in front of your application
- # Add `rack-cache` to your Gemfile before enabling this.
- # For large-scale production use, consider using a caching reverse proxy like
- # NGINX, varnish or squid.
- # config.action_dispatch.rack_cache = true
-
- # Disable serving static files from the `/public` folder by default since
- # Apache or NGINX already handles this.
- config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
-
- # Compress JavaScripts and CSS.
- config.assets.js_compressor = :uglifier
- # config.assets.css_compressor = :sass
-
- # Do not fallback to assets pipeline if a precompiled asset is missed.
- config.assets.compile = false
-
- # Asset digests allow you to set far-future HTTP expiration dates on all assets,
- # yet still be able to expire them through the digest params.
- config.assets.digest = true
-
- # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
-
- # Specifies the header that your server uses for sending files.
- # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
- # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
-
- # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
- # config.force_ssl = true
-
- # Use the lowest log level to ensure availability of diagnostic information
- # when problems arise.
- config.log_level = :debug
-
- # Prepend all log lines with the following tags.
- # config.log_tags = [ :subdomain, :uuid ]
-
- # Use a different logger for distributed setups.
- # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
-
- # Use a different cache store in production.
- # config.cache_store = :mem_cache_store
-
- # Enable serving of images, stylesheets, and JavaScripts from an asset server.
- # config.action_controller.asset_host = 'http://assets.example.com'
-
- # Ignore bad email addresses and do not raise email delivery errors.
- # Set this to true and configure the email server for immediate delivery to raise delivery errors.
- # config.action_mailer.raise_delivery_errors = false
-
- # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
- # the I18n.default_locale when a translation cannot be found).
- config.i18n.fallbacks = true
-
- # Send deprecation notices to registered listeners.
- config.active_support.deprecation = :notify
-
- # Use default logging formatter so that PID and timestamp are not suppressed.
- config.log_formatter = ::Logger::Formatter.new
-
- # Do not dump schema after migrations.
- config.active_record.dump_schema_after_migration = false
-end
diff --git a/rubyonrails/notejam/config/environments/test.rb b/rubyonrails/notejam/config/environments/test.rb
deleted file mode 100644
index 1c19f08b2..000000000
--- a/rubyonrails/notejam/config/environments/test.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-Rails.application.configure do
- # Settings specified here will take precedence over those in config/application.rb.
-
- # The test environment is used exclusively to run your application's
- # test suite. You never need to work with it otherwise. Remember that
- # your test database is "scratch space" for the test suite and is wiped
- # and recreated between test runs. Don't rely on the data there!
- config.cache_classes = true
-
- # Do not eager load code on boot. This avoids loading your whole application
- # just for the purpose of running a single test. If you are using a tool that
- # preloads Rails for running tests, you may have to set it to true.
- config.eager_load = false
-
- # Configure static file server for tests with Cache-Control for performance.
- config.serve_static_files = true
- config.static_cache_control = 'public, max-age=3600'
-
- # Show full error reports and disable caching.
- config.consider_all_requests_local = true
- config.action_controller.perform_caching = false
-
- # Raise exceptions instead of rendering exception templates.
- config.action_dispatch.show_exceptions = false
-
- # Disable request forgery protection in test environment.
- config.action_controller.allow_forgery_protection = false
-
- # Tell Action Mailer not to deliver emails to the real world.
- # The :test delivery method accumulates sent emails in the
- # ActionMailer::Base.deliveries array.
- config.action_mailer.delivery_method = :test
-
- # Randomize the order test cases are executed.
- config.active_support.test_order = :random
-
- # Print deprecation notices to the stderr.
- config.active_support.deprecation = :stderr
-
- # Raises error for missing translations
- # config.action_view.raise_on_missing_translations = true
-end
diff --git a/rubyonrails/notejam/config/initializers/assets.rb b/rubyonrails/notejam/config/initializers/assets.rb
deleted file mode 100644
index 01ef3e663..000000000
--- a/rubyonrails/notejam/config/initializers/assets.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Version of your assets, change this if you want to expire all your assets.
-Rails.application.config.assets.version = '1.0'
-
-# Add additional assets to the asset load path
-# Rails.application.config.assets.paths << Emoji.images_path
-
-# Precompile additional assets.
-# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
-# Rails.application.config.assets.precompile += %w( search.js )
diff --git a/rubyonrails/notejam/config/initializers/backtrace_silencers.rb b/rubyonrails/notejam/config/initializers/backtrace_silencers.rb
deleted file mode 100644
index 59385cdf3..000000000
--- a/rubyonrails/notejam/config/initializers/backtrace_silencers.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
-# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
-
-# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
-# Rails.backtrace_cleaner.remove_silencers!
diff --git a/rubyonrails/notejam/config/initializers/cookies_serializer.rb b/rubyonrails/notejam/config/initializers/cookies_serializer.rb
deleted file mode 100644
index 7f70458de..000000000
--- a/rubyonrails/notejam/config/initializers/cookies_serializer.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-Rails.application.config.action_dispatch.cookies_serializer = :json
diff --git a/rubyonrails/notejam/config/initializers/filter_parameter_logging.rb b/rubyonrails/notejam/config/initializers/filter_parameter_logging.rb
deleted file mode 100644
index 4a994e1e7..000000000
--- a/rubyonrails/notejam/config/initializers/filter_parameter_logging.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Configure sensitive parameters which will be filtered from the log file.
-Rails.application.config.filter_parameters += [:password]
diff --git a/rubyonrails/notejam/config/initializers/inflections.rb b/rubyonrails/notejam/config/initializers/inflections.rb
deleted file mode 100644
index ac033bf9d..000000000
--- a/rubyonrails/notejam/config/initializers/inflections.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Add new inflection rules using the following format. Inflections
-# are locale specific, and you may define rules for as many different
-# locales as you wish. All of these examples are active by default:
-# ActiveSupport::Inflector.inflections(:en) do |inflect|
-# inflect.plural /^(ox)$/i, '\1en'
-# inflect.singular /^(ox)en/i, '\1'
-# inflect.irregular 'person', 'people'
-# inflect.uncountable %w( fish sheep )
-# end
-
-# These inflection rules are supported but not enabled by default:
-# ActiveSupport::Inflector.inflections(:en) do |inflect|
-# inflect.acronym 'RESTful'
-# end
diff --git a/rubyonrails/notejam/config/initializers/mime_types.rb b/rubyonrails/notejam/config/initializers/mime_types.rb
deleted file mode 100644
index dc1899682..000000000
--- a/rubyonrails/notejam/config/initializers/mime_types.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Add new mime types for use in respond_to blocks:
-# Mime::Type.register "text/richtext", :rtf
diff --git a/rubyonrails/notejam/config/initializers/secret_token.rb b/rubyonrails/notejam/config/initializers/secret_token.rb
deleted file mode 100644
index 20ae5da89..000000000
--- a/rubyonrails/notejam/config/initializers/secret_token.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Your secret key is used for verifying the integrity of signed cookies.
-# If you change this key, all old signed cookies will become invalid!
-
-# Make sure the secret is at least 30 characters and all random,
-# no regular words or you'll be exposed to dictionary attacks.
-# You can use `rake secret` to generate a secure secret key.
-
-# Make sure your secret_key_base is kept private
-# if you're sharing your code publicly.
-Notejam::Application.config.secret_key_base = '7ba5861328657093cc207e34c73062ac79c246cfe988a2f9ec85418f5f7e4286b68e99dd96b63bcaa70052c2e9ed41e854bea85b4392a47e51732dd901f700dd'
diff --git a/rubyonrails/notejam/config/initializers/session_store.rb b/rubyonrails/notejam/config/initializers/session_store.rb
deleted file mode 100644
index 3125c786a..000000000
--- a/rubyonrails/notejam/config/initializers/session_store.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-Rails.application.config.session_store :cookie_store, key: '_notejam_session'
diff --git a/rubyonrails/notejam/config/initializers/wrap_parameters.rb b/rubyonrails/notejam/config/initializers/wrap_parameters.rb
deleted file mode 100644
index 33725e95f..000000000
--- a/rubyonrails/notejam/config/initializers/wrap_parameters.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# This file contains settings for ActionController::ParamsWrapper which
-# is enabled by default.
-
-# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
-ActiveSupport.on_load(:action_controller) do
- wrap_parameters format: [:json] if respond_to?(:wrap_parameters)
-end
-
-# To enable root element in JSON for ActiveRecord objects.
-# ActiveSupport.on_load(:active_record) do
-# self.include_root_in_json = true
-# end
diff --git a/rubyonrails/notejam/config/locales/en.yml b/rubyonrails/notejam/config/locales/en.yml
deleted file mode 100644
index 065395716..000000000
--- a/rubyonrails/notejam/config/locales/en.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-# Files in the config/locales directory are used for internationalization
-# and are automatically loaded by Rails. If you want to use locales other
-# than English, add the necessary files in this directory.
-#
-# To use the locales, use `I18n.t`:
-#
-# I18n.t 'hello'
-#
-# In views, this is aliased to just `t`:
-#
-# <%= t('hello') %>
-#
-# To use a different locale, set it with `I18n.locale`:
-#
-# I18n.locale = :es
-#
-# This would use the information in config/locales/es.yml.
-#
-# To learn more, please read the Rails Internationalization guide
-# available at http://guides.rubyonrails.org/i18n.html.
-
-en:
- hello: "Hello world"
diff --git a/rubyonrails/notejam/config/routes.rb b/rubyonrails/notejam/config/routes.rb
deleted file mode 100644
index 7383b8dfa..000000000
--- a/rubyonrails/notejam/config/routes.rb
+++ /dev/null
@@ -1,94 +0,0 @@
-Rails.application.routes.draw do
- # You can have the root of your site routed with "root"
- # root 'notes#list', as: :notes
-
- # Pad urls
- post 'pads/:id/edit' => 'pads#edit'
-
- get 'pads/:id/delete' => 'pads#delete', as: :delete_pad
- post 'pads/:id/delete' => 'pads#delete'
-
- get 'pads/create' => 'pads#create', as: :create_pad
- post 'pads/create' => 'pads#create'
-
- resources :pads, only: [:edit, :show]
-
- # Note urls
- get 'notes/create' => 'notes#create', as: :create_note
- post 'notes/create' => 'notes#create'
-
- post 'notes/:id/edit' => 'notes#edit'
-
- get 'notes/:id/delete' => 'notes#delete', as: :delete_note
- post 'notes/:id/delete' => 'notes#delete'
-
- resources :notes, only: [:edit, :show, :index]
-
- # User urls
- get 'signup/' => 'users#signup', as: :signup
- post 'signup/' => 'users#signup'
-
- get 'signin/' => 'users#signin', as: :signin
- post 'signin/' => 'users#signin'
-
- get 'settings/' => 'users#settings', as: :settings
- post 'settings/' => 'users#settings'
-
- get 'signout/' => 'users#signout', as: :signout
-
- get 'forgot-password/' => 'users#forgot_password', as: :forgot_password
- post 'forgot-password/' => 'users#forgot_password'
-
- root "notes#index"
- # The priority is based upon order of creation: first created -> highest priority.
- # See how all your routes lay out with "rake routes".
-
- # Example of regular route:
- # get 'products/:id' => 'catalog#view'
-
- # Example of named route that can be invoked with purchase_url(id: product.id)
- # get 'products/:id/purchase' => 'catalog#purchase', as: :purchase
-
- # Example resource route (maps HTTP verbs to controller actions automatically):
- # resources :products
-
- # Example resource route with options:
- # resources :products do
- # member do
- # get 'short'
- # post 'toggle'
- # end
- #
- # collection do
- # get 'sold'
- # end
- # end
-
- # Example resource route with sub-resources:
- # resources :products do
- # resources :comments, :sales
- # resource :seller
- # end
-
- # Example resource route with more complex sub-resources:
- # resources :products do
- # resources :comments
- # resources :sales do
- # get 'recent', on: :collection
- # end
- # end
-
- # Example resource route with concerns:
- # concern :toggleable do
- # post 'toggle'
- # end
- # resources :posts, concerns: :toggleable
- # resources :photos, concerns: :toggleable
-
- # Example resource route within a namespace:
- # namespace :admin do
- # # Directs /admin/products/* to Admin::ProductsController
- # # (app/controllers/admin/products_controller.rb)
- # resources :products
- # end
-end
diff --git a/rubyonrails/notejam/config/secrets.yml b/rubyonrails/notejam/config/secrets.yml
deleted file mode 100644
index 62792d8c2..000000000
--- a/rubyonrails/notejam/config/secrets.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Your secret key is used for verifying the integrity of signed cookies.
-# If you change this key, all old signed cookies will become invalid!
-
-# Make sure the secret is at least 30 characters and all random,
-# no regular words or you'll be exposed to dictionary attacks.
-# You can use `rake secret` to generate a secure secret key.
-
-# Make sure the secrets in this file are kept private
-# if you're sharing your code publicly.
-
-development:
- secret_key_base: dc9265497e52462b95984156c1e8f7767e4a1ba64173ffbf38730d06b24a6d301847ef29f252c3598532d0b5423b175c6cb0f9b52c693eef3965be80f727fd0c
-
-test:
- secret_key_base: 0df9b68f627f5144e98348eb3d037eaedec28acaa0ea3bed2decd22b1b0aaaa286c8981917dd016dbc7166b3991fd35b341f98b3274f058a2a2ffda1e00da147
-
-# Do not keep production secrets in the repository,
-# instead read values from the environment.
-production:
- secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
diff --git a/rubyonrails/notejam/db/migrate/20140409143934_create_users.rb b/rubyonrails/notejam/db/migrate/20140409143934_create_users.rb
deleted file mode 100644
index 819f6d7af..000000000
--- a/rubyonrails/notejam/db/migrate/20140409143934_create_users.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-class CreateUsers < ActiveRecord::Migration
- def change
- create_table :users do |t|
- t.string :email
- t.string :password_digest
-
- t.timestamps
- end
- end
-end
diff --git a/rubyonrails/notejam/db/migrate/20140414192524_create_pads.rb b/rubyonrails/notejam/db/migrate/20140414192524_create_pads.rb
deleted file mode 100644
index 96227fb0c..000000000
--- a/rubyonrails/notejam/db/migrate/20140414192524_create_pads.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-class CreatePads < ActiveRecord::Migration
- def change
- create_table :pads do |t|
- t.string :name
- t.references :user, index: true
-
- t.timestamps
- end
- end
-end
diff --git a/rubyonrails/notejam/db/migrate/20140418215526_create_notes.rb b/rubyonrails/notejam/db/migrate/20140418215526_create_notes.rb
deleted file mode 100644
index 0aa41b8e5..000000000
--- a/rubyonrails/notejam/db/migrate/20140418215526_create_notes.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-class CreateNotes < ActiveRecord::Migration
- def change
- create_table :notes do |t|
- t.string :name
- t.string :text
- t.references :pad, index: true
- t.references :user, index: true
-
- t.timestamps
- end
- end
-end
diff --git a/rubyonrails/notejam/db/schema.rb b/rubyonrails/notejam/db/schema.rb
deleted file mode 100644
index 98118c682..000000000
--- a/rubyonrails/notejam/db/schema.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-# encoding: UTF-8
-# This file is auto-generated from the current state of the database. Instead
-# of editing this file, please use the migrations feature of Active Record to
-# incrementally modify your database, and then regenerate this schema definition.
-#
-# Note that this schema.rb definition is the authoritative source for your
-# database schema. If you need to create the application database on another
-# system, you should be using db:schema:load, not running all the migrations
-# from scratch. The latter is a flawed and unsustainable approach (the more migrations
-# you'll amass, the slower it'll run and the greater likelihood for issues).
-#
-# It's strongly recommended that you check this file into your version control system.
-
-ActiveRecord::Schema.define(version: 20140418215526) do
-
- create_table "notes", force: :cascade do |t|
- t.string "name"
- t.string "text"
- t.integer "pad_id"
- t.integer "user_id"
- t.datetime "created_at"
- t.datetime "updated_at"
- end
-
- add_index "notes", ["pad_id"], name: "index_notes_on_pad_id"
- add_index "notes", ["user_id"], name: "index_notes_on_user_id"
-
- create_table "pads", force: :cascade do |t|
- t.string "name"
- t.integer "user_id"
- t.datetime "created_at"
- t.datetime "updated_at"
- end
-
- add_index "pads", ["user_id"], name: "index_pads_on_user_id"
-
- create_table "users", force: :cascade do |t|
- t.string "email"
- t.string "password_digest"
- t.datetime "created_at"
- t.datetime "updated_at"
- end
-
-end
diff --git a/rubyonrails/notejam/db/seeds.rb b/rubyonrails/notejam/db/seeds.rb
deleted file mode 100644
index 4edb1e857..000000000
--- a/rubyonrails/notejam/db/seeds.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-# This file should contain all the record creation needed to seed the database with its default values.
-# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
-#
-# Examples:
-#
-# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
-# Mayor.create(name: 'Emanuel', city: cities.first)
diff --git a/rubyonrails/notejam/log/.keep b/rubyonrails/notejam/log/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/rubyonrails/notejam/public/404.html b/rubyonrails/notejam/public/404.html
deleted file mode 100644
index a0daa0c15..000000000
--- a/rubyonrails/notejam/public/404.html
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-
The page you were looking for doesn't exist (404)
-
-
-
-
-
-
-
The page you were looking for doesn't exist.
-
You may have mistyped the address or the page may have moved.
-
-
If you are the application owner check the logs for more information.
-
-
diff --git a/rubyonrails/notejam/public/422.html b/rubyonrails/notejam/public/422.html
deleted file mode 100644
index fbb4b84d7..000000000
--- a/rubyonrails/notejam/public/422.html
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-
The change you wanted was rejected (422)
-
-
-
-
-
-
-
The change you wanted was rejected.
-
Maybe you tried to change something you didn't have access to.
-
-
If you are the application owner check the logs for more information.
-
-
diff --git a/rubyonrails/notejam/public/500.html b/rubyonrails/notejam/public/500.html
deleted file mode 100644
index e9052d35b..000000000
--- a/rubyonrails/notejam/public/500.html
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
We're sorry, but something went wrong (500)
-
-
-
-
-
-
-
We're sorry, but something went wrong.
-
-
If you are the application owner check the logs for more information.
-
-
diff --git a/rubyonrails/notejam/public/favicon.ico b/rubyonrails/notejam/public/favicon.ico
deleted file mode 100644
index e69de29bb..000000000
diff --git a/rubyonrails/notejam/public/robots.txt b/rubyonrails/notejam/public/robots.txt
deleted file mode 100644
index 1a3a5e4dd..000000000
--- a/rubyonrails/notejam/public/robots.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-# See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
-#
-# To ban all spiders from the entire site uncomment the next two lines:
-# User-agent: *
-# Disallow: /
diff --git a/rubyonrails/notejam/test/controllers/.keep b/rubyonrails/notejam/test/controllers/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/rubyonrails/notejam/test/controllers/notes_controller_test.rb b/rubyonrails/notejam/test/controllers/notes_controller_test.rb
deleted file mode 100644
index 529fcb06d..000000000
--- a/rubyonrails/notejam/test/controllers/notes_controller_test.rb
+++ /dev/null
@@ -1,90 +0,0 @@
-require 'test_helper'
-
-class NotesControllerTest < ActionController::TestCase
- test 'note should be successfully created' do
- assert_response :success
- login_as(:existent_user)
- assert_difference('Note.count') do
- post :create, note: { name: 'test note', text: 'text', pad_id: 0 }
- end
- end
-
- test 'note should not be created by anonymous user' do
- post :create, note: { name: 'test note', text: 'text' }
- assert_redirected_to signin_path
- end
-
- test 'note should not be created if required fields are missing' do
- login_as(:existent_user)
- post :create, note: { name: '', text: '', pad_id: 0 }
- assert_select '.errorlist li', count: 2
- end
-
- test 'note should be edited by an owner' do
- login_as(:existent_user)
- note = notes(:existent_note)
- new_name = 'new name'
- new_text = 'new text'
- post :edit, id: note.id, note: { name: new_name, text: new_text, pad_id: 0 }
- assert_redirected_to note_path id: note.id
- assert_equal [new_name, new_text], [Note.first.name, Note.first.text]
- end
-
- test "note can't be edited if required fields are missing" do
- login_as(:existent_user)
- note = notes(:existent_note)
- post :edit, id: note.id, note: { name: '', text: '', pad_id: 0 }
- assert_select '.errorlist li', count: 2
- end
-
- test 'note should not be edited by not an owner' do
- login_as(:existent_user2)
- note = notes(:existent_note)
- post :edit, id: note.id, note: { name: 'name', text: 'text' }
- assert_response :missing
- end
-
- test "note should not be added into another's user pad" do
- login_as(:existent_user2)
- another_user_pad = pads(:existent_pad)
- post :create, note: {
- name: 'name', text: 'text', pad_id: another_user_pad.id
- }
- assert_response :missing
- end
-
- test 'note should be viewed by an owner' do
- login_as(:existent_user)
- note = notes(:existent_note)
- get :show, id: note.id
- assert_response :success
- end
-
- test 'note should not be viewed by not an owner' do
- login_as(:existent_user2)
- note = notes(:existent_note)
- get :show, id: note.id
- assert_response :missing
- end
-
- test 'note should be deleted by an owner' do
- login_as(:existent_user)
- note = notes(:existent_note)
- assert_difference('Note.count', -1) do
- post :delete, id: note.id
- end
- end
-
- test 'note should not be deleted by not an owner' do
- login_as(:existent_user2)
- note = notes(:existent_note)
- post :delete, id: note.id
- assert_response :missing
- end
-
- test 'note should be listed in index page' do
- login_as(:existent_user)
- get :index
- assert_response :success
- end
-end
diff --git a/rubyonrails/notejam/test/controllers/pads_controller_test.rb b/rubyonrails/notejam/test/controllers/pads_controller_test.rb
deleted file mode 100644
index 284ac9df9..000000000
--- a/rubyonrails/notejam/test/controllers/pads_controller_test.rb
+++ /dev/null
@@ -1,74 +0,0 @@
-require 'test_helper'
-
-class PadsControllerTest < ActionController::TestCase
- test 'pad should be created' do
- login_as(:existent_user)
- assert_difference('Pad.count') do
- post :create, pad: { name: 'test pad' }
- end
- end
-
- test 'pad should not be created if required fields are missing' do
- login_as(:existent_user)
- post :create, pad: { name: '' }
- assert_select '.errorlist li', "name can't be blank"
- end
-
- test 'pad should not be created by anonymous user' do
- post :create, pad: { name: 'test pad' }
- assert_redirected_to signin_path
- end
-
- test 'pad should not be edited if required fields are misiing' do
- login_as(:existent_user)
- pad = pads(:existent_pad)
- post :edit, id: pad.id, pad: { name: '' }
- assert_select '.errorlist li', "name can't be blank"
- end
-
- test 'pad should be edited by an owner' do
- login_as(:existent_user)
- pad = pads(:existent_pad)
- new_name = 'new_name'
- post :edit, id: pad.id, pad: { name: new_name }
- assert_redirected_to pad_path id: pad.id
- assert_equal new_name, Pad.first.name
- end
-
- test 'pad should not be edited by not an owner' do
- login_as(:existent_user2)
- pad = pads(:existent_pad)
- new_name = 'new_name'
- post :edit, id: pad.id, pad: { name: new_name }
- assert_response :missing
- end
-
- test 'pad notes should be viewd by an owner' do
- login_as(:existent_user)
- pad = pads(:existent_pad)
- get :show, id: pad.id
- assert_response :success
- end
-
- test 'pad notes should not be viewed by not an owner' do
- login_as(:existent_user2)
- pad = pads(:existent_pad)
- get :show, id: pad.id
- assert_response :missing
- end
-
- test 'pad should be deleted by an owner' do
- login_as(:existent_user)
- pad = pads(:existent_pad)
- assert_difference('Pad.count', -1) do
- post :delete, id: pad.id
- end
- end
-
- test 'pad should not be deleted by not an owner' do
- login_as(:existent_user2)
- pad = pads(:existent_pad)
- post :delete, id: pad.id
- assert_response :missing
- end
-end
diff --git a/rubyonrails/notejam/test/controllers/users_controller_test.rb b/rubyonrails/notejam/test/controllers/users_controller_test.rb
deleted file mode 100644
index 5b734a92a..000000000
--- a/rubyonrails/notejam/test/controllers/users_controller_test.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-require 'test_helper'
-
-class UsersControllerTest < ActionController::TestCase
- test 'should successfully signup' do
- assert_difference('User.count') do
- post :signup, user: {
- email: 'user@example.com', password: 'password',
- password_confirmation: 'password'
- }
- end
- assert_redirected_to signin_path
- end
-
- test 'should not signup if invalid email' do
- post :signup, user: {
- email: 'invalid email', password: 'password',
- password_confirmation: 'password'
- }
- assert_select '.errorlist li', 'email is invalid'
- end
-
- test 'should not signup if required fields are missing' do
- post :signup, user: {
- email: '', password: '',
- password_confirmation: ''
- }
- assert_select '.errorlist li'
- end
-
- test 'should not signup if email exists' do
- email = users(:existent_user).email
- post :signup, user: {
- email: email, password: 'password',
- password_confirmation: 'password'
- }
- assert_select '.errorlist li', 'email has already been taken'
- end
-
- test 'should not signup if passwords do not match' do
- post :signup, user: {
- email: 'user@example.com', password: 'password1',
- password_confirmation: 'password2'
- }
- assert_select '.errorlist li'
- end
-
- test 'should successfully signin' do
- email = users(:existent_user).email
- post :signin,
- email: email, password: 'secure_password'
-
- assert_redirected_to notes_path
- end
-
- test 'should not signin if wrong email/password' do
- post :signin,
- email: 'some_email@example.com', password: 'password'
-
- assert_select '.alert-error', 'Invalid email or password'
- end
-end
diff --git a/rubyonrails/notejam/test/fixtures/.keep b/rubyonrails/notejam/test/fixtures/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/rubyonrails/notejam/test/fixtures/notes.yml b/rubyonrails/notejam/test/fixtures/notes.yml
deleted file mode 100644
index fd12e2428..000000000
--- a/rubyonrails/notejam/test/fixtures/notes.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-existent_note:
- name: "Note"
- pad: existent_pad
- user: existent_user
diff --git a/rubyonrails/notejam/test/fixtures/pads.yml b/rubyonrails/notejam/test/fixtures/pads.yml
deleted file mode 100644
index 851fd7185..000000000
--- a/rubyonrails/notejam/test/fixtures/pads.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-existent_pad:
- name: "Pad"
- user: existent_user
diff --git a/rubyonrails/notejam/test/fixtures/users.yml b/rubyonrails/notejam/test/fixtures/users.yml
deleted file mode 100644
index f514aee89..000000000
--- a/rubyonrails/notejam/test/fixtures/users.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-existent_user:
- email: 'existent_user@example.com'
- password_digest: <%= BCrypt::Password.create("secure_password")%>
-
-existent_user2:
- email: 'existent_user2@example.com'
- password_digest: <%= BCrypt::Password.create("secure_password")%>
diff --git a/rubyonrails/notejam/test/helpers/.keep b/rubyonrails/notejam/test/helpers/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/rubyonrails/notejam/test/helpers/note_helper_test.rb b/rubyonrails/notejam/test/helpers/note_helper_test.rb
deleted file mode 100644
index 58d49228a..000000000
--- a/rubyonrails/notejam/test/helpers/note_helper_test.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-require 'test_helper'
-
-class NoteHelperTest < ActionView::TestCase
-end
diff --git a/rubyonrails/notejam/test/helpers/pad_helper_test.rb b/rubyonrails/notejam/test/helpers/pad_helper_test.rb
deleted file mode 100644
index a04e97ef5..000000000
--- a/rubyonrails/notejam/test/helpers/pad_helper_test.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-require 'test_helper'
-
-class PadHelperTest < ActionView::TestCase
-end
diff --git a/rubyonrails/notejam/test/helpers/user_helper_test.rb b/rubyonrails/notejam/test/helpers/user_helper_test.rb
deleted file mode 100644
index ad44a5374..000000000
--- a/rubyonrails/notejam/test/helpers/user_helper_test.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-require 'test_helper'
-
-class UserHelperTest < ActionView::TestCase
-end
diff --git a/rubyonrails/notejam/test/integration/.keep b/rubyonrails/notejam/test/integration/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/rubyonrails/notejam/test/mailers/.keep b/rubyonrails/notejam/test/mailers/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/rubyonrails/notejam/test/mailers/user_mailer_test.rb b/rubyonrails/notejam/test/mailers/user_mailer_test.rb
deleted file mode 100644
index 67a1629cc..000000000
--- a/rubyonrails/notejam/test/mailers/user_mailer_test.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require 'test_helper'
-
-class UserMailerTest < ActionMailer::TestCase
- # test "the truth" do
- # assert true
- # end
-end
diff --git a/rubyonrails/notejam/test/models/.keep b/rubyonrails/notejam/test/models/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/rubyonrails/notejam/test/models/note_test.rb b/rubyonrails/notejam/test/models/note_test.rb
deleted file mode 100644
index 7bbab5370..000000000
--- a/rubyonrails/notejam/test/models/note_test.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require 'test_helper'
-
-class NoteTest < ActiveSupport::TestCase
- # test "the truth" do
- # assert true
- # end
-end
diff --git a/rubyonrails/notejam/test/models/pad_test.rb b/rubyonrails/notejam/test/models/pad_test.rb
deleted file mode 100644
index fd17ddbf6..000000000
--- a/rubyonrails/notejam/test/models/pad_test.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require 'test_helper'
-
-class PadTest < ActiveSupport::TestCase
- # test "the truth" do
- # assert true
- # end
-end
diff --git a/rubyonrails/notejam/test/models/user_test.rb b/rubyonrails/notejam/test/models/user_test.rb
deleted file mode 100644
index 82f61e010..000000000
--- a/rubyonrails/notejam/test/models/user_test.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require 'test_helper'
-
-class UserTest < ActiveSupport::TestCase
- # test "the truth" do
- # assert true
- # end
-end
diff --git a/rubyonrails/notejam/test/test_helper.rb b/rubyonrails/notejam/test/test_helper.rb
deleted file mode 100644
index 9545f86cc..000000000
--- a/rubyonrails/notejam/test/test_helper.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-ENV["RAILS_ENV"] ||= "test"
-require File.expand_path('../../config/environment', __FILE__)
-require 'rails/test_help'
-
-class ActiveSupport::TestCase
- ActiveRecord::Migration.check_pending!
-
- # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
- #
- # Note: You'll currently still have to declare fixtures explicitly in integration tests
- # -- they do not yet inherit this setting
- fixtures :all
-
- # Add more helper methods to be used by all tests here...
- def login_as(user)
- @request.session[:user_id] = user ? users(user).id : nil
- end
-end
diff --git a/rubyonrails/notejam/vendor/assets/javascripts/.keep b/rubyonrails/notejam/vendor/assets/javascripts/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/rubyonrails/notejam/vendor/assets/stylesheets/.keep b/rubyonrails/notejam/vendor/assets/stylesheets/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/screenshots.rst b/screenshots.rst
deleted file mode 100644
index c6f547a15..000000000
--- a/screenshots.rst
+++ /dev/null
@@ -1,46 +0,0 @@
-*******************
-Notejam screenshots
-*******************
-
-
-**Sign in** page
-
-.. image:: https://github.com/komarserjio/notejam/blob/master/html/screenshots/1.png
- :alt: Sign In
- :width: 835
- :align: center
-
-**All notes** page
-
-.. image:: https://github.com/komarserjio/notejam/blob/master/html/screenshots/2.png
- :alt: All notes
- :width: 835
- :align: center
-
-**New note** page
-
-.. image:: https://github.com/komarserjio/notejam/blob/master/html/screenshots/3.png
- :alt: New note
- :width: 835
- :align: center
-
-**View note** page
-
-.. image:: https://github.com/komarserjio/notejam/blob/master/html/screenshots/4.png
- :alt: View note
- :width: 835
- :align: center
-
-**Account settings** page
-
-.. image:: https://github.com/komarserjio/notejam/blob/master/html/screenshots/5.png
- :alt: Account settings
- :width: 835
- :align: center
-
-**Sign up** page
-
-.. image:: https://github.com/komarserjio/notejam/blob/master/html/screenshots/6.png
- :alt: Sign up
- :width: 835
- :align: center
diff --git a/spring/.gitignore b/spring/.gitignore
deleted file mode 100644
index 55276a330..000000000
--- a/spring/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/target/
-db.*
-application.properties
diff --git a/spring/README.rst b/spring/README.rst
deleted file mode 100644
index 2e3b57aa3..000000000
--- a/spring/README.rst
+++ /dev/null
@@ -1,103 +0,0 @@
-***************
-Notejam: Spring
-***************
-
-Notejam application implemented using `Spring
`_ framework.
-
-Spring version: 4.2.3
-
-The full stack is:
-
-- `Spring Boot
`_ (Spring configuration)
-- `Thymeleaf
`_ (View)
-- `Spring Security
`_ (Security framework)
-- `Spring`_ (DI and MVC framework)
-- `Spring Data
`_ (Persistence abstraction)
-- `JPA
`_ (Persistence API)
-- `Hibernate `_ (JPA implementation)
-
-The application is maintained by `@malkusch `_.
-
-==========================
-Installation and launching
-==========================
-
------
-Clone
------
-
-Clone the repo:
-
-.. code-block:: bash
-
- $ git clone https://github.com/komarserjio/notejam YOUR_PROJECT_DIR/
-
--------
-Install
--------
-
-Install a `JDK `_ and `Maven `_.
-
--------------
-Configuration
--------------
-
-The application has a password recovery process which involves sending an email.
-If you want to enable that, you have to create a local application.properties file
-and set there the property spring.mail.host to your SMTP server (e.g. spring.mail.host = smtp.example.net).
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/spring/
- $ vi application.properties
-
-See `MailProperties `_
-for more mail properties.
-
-------
-Launch
-------
-
-Compile and launch the application:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/spring/
- $ mvn spring-boot:run
-
-Go to http://localhost:8080/ in your browser.
-
-~~~~~~~~~~~~
-Localization
-~~~~~~~~~~~~
-
-This application comes with support for the languages German and English. The locale is
-determined by the Accept-Language request header. If the header is not present the
-content will be served with the default locale of the JVM. The application will not
-start if the default locale is non of the supported languages.
-
----------
-Run tests
----------
-
-Run functional and unit tests:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/spring/
- $ mvn test
-
-============
-Contribution
-============
-
-Do you have Java/Spring experience? Help the application to follow Java and Spring best practices.
-
-Please send your pull requests in the ``master`` branch.
-Always prepend your commits with framework name:
-
-.. code-block:: bash
-
- Spring: Implement sign in functionality
-
-Read `contribution guide `_ for details.
diff --git a/spring/src/test/resources/application-test.properties b/spring/src/test/resources/application-test.properties
deleted file mode 100644
index ba26b60f9..000000000
--- a/spring/src/test/resources/application-test.properties
+++ /dev/null
@@ -1 +0,0 @@
-spring.datasource.url=jdbc:hsqldb:mem:test
diff --git a/spring/src/main/java/net/notejam/spring/Application.java b/src/main/java/net/notejam/spring/Application.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/Application.java
rename to src/main/java/net/notejam/spring/Application.java
diff --git a/spring/src/main/java/net/notejam/spring/URITemplates.java b/src/main/java/net/notejam/spring/URITemplates.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/URITemplates.java
rename to src/main/java/net/notejam/spring/URITemplates.java
diff --git a/spring/src/main/java/net/notejam/spring/error/ForcedErrorController.java b/src/main/java/net/notejam/spring/error/ForcedErrorController.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/error/ForcedErrorController.java
rename to src/main/java/net/notejam/spring/error/ForcedErrorController.java
diff --git a/spring/src/main/java/net/notejam/spring/error/ResourceNotFoundException.java b/src/main/java/net/notejam/spring/error/ResourceNotFoundException.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/error/ResourceNotFoundException.java
rename to src/main/java/net/notejam/spring/error/ResourceNotFoundException.java
diff --git a/spring/src/main/java/net/notejam/spring/error/UnsupportedLocaleException.java b/src/main/java/net/notejam/spring/error/UnsupportedLocaleException.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/error/UnsupportedLocaleException.java
rename to src/main/java/net/notejam/spring/error/UnsupportedLocaleException.java
diff --git a/spring/src/main/java/net/notejam/spring/error/package-info.java b/src/main/java/net/notejam/spring/error/package-info.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/error/package-info.java
rename to src/main/java/net/notejam/spring/error/package-info.java
diff --git a/spring/src/main/java/net/notejam/spring/helper/converter/StringToPeriodConverter.java b/src/main/java/net/notejam/spring/helper/converter/StringToPeriodConverter.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/helper/converter/StringToPeriodConverter.java
rename to src/main/java/net/notejam/spring/helper/converter/StringToPeriodConverter.java
diff --git a/spring/src/main/java/net/notejam/spring/helper/converter/package-info.java b/src/main/java/net/notejam/spring/helper/converter/package-info.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/helper/converter/package-info.java
rename to src/main/java/net/notejam/spring/helper/converter/package-info.java
diff --git a/spring/src/main/java/net/notejam/spring/helper/reflection/Annotated.java b/src/main/java/net/notejam/spring/helper/reflection/Annotated.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/helper/reflection/Annotated.java
rename to src/main/java/net/notejam/spring/helper/reflection/Annotated.java
diff --git a/spring/src/main/java/net/notejam/spring/helper/reflection/ReflectionUtils.java b/src/main/java/net/notejam/spring/helper/reflection/ReflectionUtils.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/helper/reflection/ReflectionUtils.java
rename to src/main/java/net/notejam/spring/helper/reflection/ReflectionUtils.java
diff --git a/spring/src/main/java/net/notejam/spring/helper/reflection/package-info.java b/src/main/java/net/notejam/spring/helper/reflection/package-info.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/helper/reflection/package-info.java
rename to src/main/java/net/notejam/spring/helper/reflection/package-info.java
diff --git a/spring/src/main/java/net/notejam/spring/note/Note.java b/src/main/java/net/notejam/spring/note/Note.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/note/Note.java
rename to src/main/java/net/notejam/spring/note/Note.java
diff --git a/spring/src/main/java/net/notejam/spring/note/NoteRepository.java b/src/main/java/net/notejam/spring/note/NoteRepository.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/note/NoteRepository.java
rename to src/main/java/net/notejam/spring/note/NoteRepository.java
diff --git a/spring/src/main/java/net/notejam/spring/note/NoteService.java b/src/main/java/net/notejam/spring/note/NoteService.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/note/NoteService.java
rename to src/main/java/net/notejam/spring/note/NoteService.java
diff --git a/spring/src/main/java/net/notejam/spring/note/controller/AllNotesController.java b/src/main/java/net/notejam/spring/note/controller/AllNotesController.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/note/controller/AllNotesController.java
rename to src/main/java/net/notejam/spring/note/controller/AllNotesController.java
diff --git a/spring/src/main/java/net/notejam/spring/note/controller/CreateNoteController.java b/src/main/java/net/notejam/spring/note/controller/CreateNoteController.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/note/controller/CreateNoteController.java
rename to src/main/java/net/notejam/spring/note/controller/CreateNoteController.java
diff --git a/spring/src/main/java/net/notejam/spring/note/controller/DeleteNoteController.java b/src/main/java/net/notejam/spring/note/controller/DeleteNoteController.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/note/controller/DeleteNoteController.java
rename to src/main/java/net/notejam/spring/note/controller/DeleteNoteController.java
diff --git a/spring/src/main/java/net/notejam/spring/note/controller/EditNoteController.java b/src/main/java/net/notejam/spring/note/controller/EditNoteController.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/note/controller/EditNoteController.java
rename to src/main/java/net/notejam/spring/note/controller/EditNoteController.java
diff --git a/spring/src/main/java/net/notejam/spring/note/controller/ViewNoteController.java b/src/main/java/net/notejam/spring/note/controller/ViewNoteController.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/note/controller/ViewNoteController.java
rename to src/main/java/net/notejam/spring/note/controller/ViewNoteController.java
diff --git a/spring/src/main/java/net/notejam/spring/note/controller/package-info.java b/src/main/java/net/notejam/spring/note/controller/package-info.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/note/controller/package-info.java
rename to src/main/java/net/notejam/spring/note/controller/package-info.java
diff --git a/spring/src/main/java/net/notejam/spring/note/package-info.java b/src/main/java/net/notejam/spring/note/package-info.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/note/package-info.java
rename to src/main/java/net/notejam/spring/note/package-info.java
diff --git a/spring/src/main/java/net/notejam/spring/package-info.java b/src/main/java/net/notejam/spring/package-info.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/package-info.java
rename to src/main/java/net/notejam/spring/package-info.java
diff --git a/spring/src/main/java/net/notejam/spring/pad/Pad.java b/src/main/java/net/notejam/spring/pad/Pad.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/pad/Pad.java
rename to src/main/java/net/notejam/spring/pad/Pad.java
diff --git a/spring/src/main/java/net/notejam/spring/pad/PadRepository.java b/src/main/java/net/notejam/spring/pad/PadRepository.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/pad/PadRepository.java
rename to src/main/java/net/notejam/spring/pad/PadRepository.java
diff --git a/spring/src/main/java/net/notejam/spring/pad/PadService.java b/src/main/java/net/notejam/spring/pad/PadService.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/pad/PadService.java
rename to src/main/java/net/notejam/spring/pad/PadService.java
diff --git a/spring/src/main/java/net/notejam/spring/pad/controller/CreatePadController.java b/src/main/java/net/notejam/spring/pad/controller/CreatePadController.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/pad/controller/CreatePadController.java
rename to src/main/java/net/notejam/spring/pad/controller/CreatePadController.java
diff --git a/spring/src/main/java/net/notejam/spring/pad/controller/DeletePadController.java b/src/main/java/net/notejam/spring/pad/controller/DeletePadController.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/pad/controller/DeletePadController.java
rename to src/main/java/net/notejam/spring/pad/controller/DeletePadController.java
diff --git a/spring/src/main/java/net/notejam/spring/pad/controller/EditPadController.java b/src/main/java/net/notejam/spring/pad/controller/EditPadController.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/pad/controller/EditPadController.java
rename to src/main/java/net/notejam/spring/pad/controller/EditPadController.java
diff --git a/spring/src/main/java/net/notejam/spring/pad/controller/PadsAdvice.java b/src/main/java/net/notejam/spring/pad/controller/PadsAdvice.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/pad/controller/PadsAdvice.java
rename to src/main/java/net/notejam/spring/pad/controller/PadsAdvice.java
diff --git a/spring/src/main/java/net/notejam/spring/pad/controller/ViewPadNotesController.java b/src/main/java/net/notejam/spring/pad/controller/ViewPadNotesController.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/pad/controller/ViewPadNotesController.java
rename to src/main/java/net/notejam/spring/pad/controller/ViewPadNotesController.java
diff --git a/spring/src/main/java/net/notejam/spring/pad/controller/package-info.java b/src/main/java/net/notejam/spring/pad/controller/package-info.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/pad/controller/package-info.java
rename to src/main/java/net/notejam/spring/pad/controller/package-info.java
diff --git a/spring/src/main/java/net/notejam/spring/pad/package-info.java b/src/main/java/net/notejam/spring/pad/package-info.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/pad/package-info.java
rename to src/main/java/net/notejam/spring/pad/package-info.java
diff --git a/spring/src/main/java/net/notejam/spring/security/LoginController.java b/src/main/java/net/notejam/spring/security/LoginController.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/security/LoginController.java
rename to src/main/java/net/notejam/spring/security/LoginController.java
diff --git a/spring/src/main/java/net/notejam/spring/security/SecurityConfiguration.java b/src/main/java/net/notejam/spring/security/SecurityConfiguration.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/security/SecurityConfiguration.java
rename to src/main/java/net/notejam/spring/security/SecurityConfiguration.java
diff --git a/spring/src/main/java/net/notejam/spring/security/SecurityService.java b/src/main/java/net/notejam/spring/security/SecurityService.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/security/SecurityService.java
rename to src/main/java/net/notejam/spring/security/SecurityService.java
diff --git a/spring/src/main/java/net/notejam/spring/security/UserDetailsServiceImpl.java b/src/main/java/net/notejam/spring/security/UserDetailsServiceImpl.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/security/UserDetailsServiceImpl.java
rename to src/main/java/net/notejam/spring/security/UserDetailsServiceImpl.java
diff --git a/spring/src/main/java/net/notejam/spring/security/owner/Owned.java b/src/main/java/net/notejam/spring/security/owner/Owned.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/security/owner/Owned.java
rename to src/main/java/net/notejam/spring/security/owner/Owned.java
diff --git a/spring/src/main/java/net/notejam/spring/security/owner/PermitOwner.java b/src/main/java/net/notejam/spring/security/owner/PermitOwner.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/security/owner/PermitOwner.java
rename to src/main/java/net/notejam/spring/security/owner/PermitOwner.java
diff --git a/spring/src/main/java/net/notejam/spring/security/owner/PermitOwnerAspect.java b/src/main/java/net/notejam/spring/security/owner/PermitOwnerAspect.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/security/owner/PermitOwnerAspect.java
rename to src/main/java/net/notejam/spring/security/owner/PermitOwnerAspect.java
diff --git a/spring/src/main/java/net/notejam/spring/security/owner/package-info.java b/src/main/java/net/notejam/spring/security/owner/package-info.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/security/owner/package-info.java
rename to src/main/java/net/notejam/spring/security/owner/package-info.java
diff --git a/spring/src/main/java/net/notejam/spring/security/package-info.java b/src/main/java/net/notejam/spring/security/package-info.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/security/package-info.java
rename to src/main/java/net/notejam/spring/security/package-info.java
diff --git a/spring/src/main/java/net/notejam/spring/user/User.java b/src/main/java/net/notejam/spring/user/User.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/User.java
rename to src/main/java/net/notejam/spring/user/User.java
diff --git a/spring/src/main/java/net/notejam/spring/user/UserRepository.java b/src/main/java/net/notejam/spring/user/UserRepository.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/UserRepository.java
rename to src/main/java/net/notejam/spring/user/UserRepository.java
diff --git a/spring/src/main/java/net/notejam/spring/user/UserService.java b/src/main/java/net/notejam/spring/user/UserService.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/UserService.java
rename to src/main/java/net/notejam/spring/user/UserService.java
diff --git a/spring/src/main/java/net/notejam/spring/user/account/Account.java b/src/main/java/net/notejam/spring/user/account/Account.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/account/Account.java
rename to src/main/java/net/notejam/spring/user/account/Account.java
diff --git a/spring/src/main/java/net/notejam/spring/user/account/AccountController.java b/src/main/java/net/notejam/spring/user/account/AccountController.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/account/AccountController.java
rename to src/main/java/net/notejam/spring/user/account/AccountController.java
diff --git a/spring/src/main/java/net/notejam/spring/user/account/constraints/CurrentPassword.java b/src/main/java/net/notejam/spring/user/account/constraints/CurrentPassword.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/account/constraints/CurrentPassword.java
rename to src/main/java/net/notejam/spring/user/account/constraints/CurrentPassword.java
diff --git a/spring/src/main/java/net/notejam/spring/user/account/constraints/CurrentPasswordValidator.java b/src/main/java/net/notejam/spring/user/account/constraints/CurrentPasswordValidator.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/account/constraints/CurrentPasswordValidator.java
rename to src/main/java/net/notejam/spring/user/account/constraints/CurrentPasswordValidator.java
diff --git a/spring/src/main/java/net/notejam/spring/user/account/constraints/package-info.java b/src/main/java/net/notejam/spring/user/account/constraints/package-info.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/account/constraints/package-info.java
rename to src/main/java/net/notejam/spring/user/account/constraints/package-info.java
diff --git a/spring/src/main/java/net/notejam/spring/user/account/package-info.java b/src/main/java/net/notejam/spring/user/account/package-info.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/account/package-info.java
rename to src/main/java/net/notejam/spring/user/account/package-info.java
diff --git a/spring/src/main/java/net/notejam/spring/user/constraints/Password.java b/src/main/java/net/notejam/spring/user/constraints/Password.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/constraints/Password.java
rename to src/main/java/net/notejam/spring/user/constraints/Password.java
diff --git a/spring/src/main/java/net/notejam/spring/user/constraints/package-info.java b/src/main/java/net/notejam/spring/user/constraints/package-info.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/constraints/package-info.java
rename to src/main/java/net/notejam/spring/user/constraints/package-info.java
diff --git a/spring/src/main/java/net/notejam/spring/user/forgot/ForgotPassword.java b/src/main/java/net/notejam/spring/user/forgot/ForgotPassword.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/forgot/ForgotPassword.java
rename to src/main/java/net/notejam/spring/user/forgot/ForgotPassword.java
diff --git a/spring/src/main/java/net/notejam/spring/user/forgot/ForgotPasswordController.java b/src/main/java/net/notejam/spring/user/forgot/ForgotPasswordController.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/forgot/ForgotPasswordController.java
rename to src/main/java/net/notejam/spring/user/forgot/ForgotPasswordController.java
diff --git a/spring/src/main/java/net/notejam/spring/user/forgot/InvalidTokenException.java b/src/main/java/net/notejam/spring/user/forgot/InvalidTokenException.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/forgot/InvalidTokenException.java
rename to src/main/java/net/notejam/spring/user/forgot/InvalidTokenException.java
diff --git a/spring/src/main/java/net/notejam/spring/user/forgot/PasswordRecoveryService.java b/src/main/java/net/notejam/spring/user/forgot/PasswordRecoveryService.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/forgot/PasswordRecoveryService.java
rename to src/main/java/net/notejam/spring/user/forgot/PasswordRecoveryService.java
diff --git a/spring/src/main/java/net/notejam/spring/user/forgot/RecoverPasswordController.java b/src/main/java/net/notejam/spring/user/forgot/RecoverPasswordController.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/forgot/RecoverPasswordController.java
rename to src/main/java/net/notejam/spring/user/forgot/RecoverPasswordController.java
diff --git a/spring/src/main/java/net/notejam/spring/user/forgot/RecoveryToken.java b/src/main/java/net/notejam/spring/user/forgot/RecoveryToken.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/forgot/RecoveryToken.java
rename to src/main/java/net/notejam/spring/user/forgot/RecoveryToken.java
diff --git a/spring/src/main/java/net/notejam/spring/user/forgot/RecoveryTokenRepository.java b/src/main/java/net/notejam/spring/user/forgot/RecoveryTokenRepository.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/forgot/RecoveryTokenRepository.java
rename to src/main/java/net/notejam/spring/user/forgot/RecoveryTokenRepository.java
diff --git a/spring/src/main/java/net/notejam/spring/user/forgot/package-info.java b/src/main/java/net/notejam/spring/user/forgot/package-info.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/forgot/package-info.java
rename to src/main/java/net/notejam/spring/user/forgot/package-info.java
diff --git a/spring/src/main/java/net/notejam/spring/user/package-info.java b/src/main/java/net/notejam/spring/user/package-info.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/package-info.java
rename to src/main/java/net/notejam/spring/user/package-info.java
diff --git a/spring/src/main/java/net/notejam/spring/user/signup/Signup.java b/src/main/java/net/notejam/spring/user/signup/Signup.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/signup/Signup.java
rename to src/main/java/net/notejam/spring/user/signup/Signup.java
diff --git a/spring/src/main/java/net/notejam/spring/user/signup/SignupController.java b/src/main/java/net/notejam/spring/user/signup/SignupController.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/signup/SignupController.java
rename to src/main/java/net/notejam/spring/user/signup/SignupController.java
diff --git a/spring/src/main/java/net/notejam/spring/user/signup/constraints/UniqueEmail.java b/src/main/java/net/notejam/spring/user/signup/constraints/UniqueEmail.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/signup/constraints/UniqueEmail.java
rename to src/main/java/net/notejam/spring/user/signup/constraints/UniqueEmail.java
diff --git a/spring/src/main/java/net/notejam/spring/user/signup/constraints/UniqueEmailValidator.java b/src/main/java/net/notejam/spring/user/signup/constraints/UniqueEmailValidator.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/signup/constraints/UniqueEmailValidator.java
rename to src/main/java/net/notejam/spring/user/signup/constraints/UniqueEmailValidator.java
diff --git a/spring/src/main/java/net/notejam/spring/user/signup/constraints/package-info.java b/src/main/java/net/notejam/spring/user/signup/constraints/package-info.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/signup/constraints/package-info.java
rename to src/main/java/net/notejam/spring/user/signup/constraints/package-info.java
diff --git a/spring/src/main/java/net/notejam/spring/user/signup/package-info.java b/src/main/java/net/notejam/spring/user/signup/package-info.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/user/signup/package-info.java
rename to src/main/java/net/notejam/spring/user/signup/package-info.java
diff --git a/spring/src/main/java/net/notejam/spring/view/ViewConfiguration.java b/src/main/java/net/notejam/spring/view/ViewConfiguration.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/view/ViewConfiguration.java
rename to src/main/java/net/notejam/spring/view/ViewConfiguration.java
diff --git a/spring/src/main/java/net/notejam/spring/view/dialect/NaturalLanguageDateProcessor.java b/src/main/java/net/notejam/spring/view/dialect/NaturalLanguageDateProcessor.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/view/dialect/NaturalLanguageDateProcessor.java
rename to src/main/java/net/notejam/spring/view/dialect/NaturalLanguageDateProcessor.java
diff --git a/spring/src/main/java/net/notejam/spring/view/dialect/NoteTextProcessor.java b/src/main/java/net/notejam/spring/view/dialect/NoteTextProcessor.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/view/dialect/NoteTextProcessor.java
rename to src/main/java/net/notejam/spring/view/dialect/NoteTextProcessor.java
diff --git a/spring/src/main/java/net/notejam/spring/view/dialect/NotejamDialect.java b/src/main/java/net/notejam/spring/view/dialect/NotejamDialect.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/view/dialect/NotejamDialect.java
rename to src/main/java/net/notejam/spring/view/dialect/NotejamDialect.java
diff --git a/spring/src/main/java/net/notejam/spring/view/dialect/ProcessorUtil.java b/src/main/java/net/notejam/spring/view/dialect/ProcessorUtil.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/view/dialect/ProcessorUtil.java
rename to src/main/java/net/notejam/spring/view/dialect/ProcessorUtil.java
diff --git a/spring/src/main/java/net/notejam/spring/view/dialect/package-info.java b/src/main/java/net/notejam/spring/view/dialect/package-info.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/view/dialect/package-info.java
rename to src/main/java/net/notejam/spring/view/dialect/package-info.java
diff --git a/spring/src/main/java/net/notejam/spring/view/package-info.java b/src/main/java/net/notejam/spring/view/package-info.java
similarity index 100%
rename from spring/src/main/java/net/notejam/spring/view/package-info.java
rename to src/main/java/net/notejam/spring/view/package-info.java
diff --git a/spring/src/main/resources/application.properties b/src/main/resources/application.properties
similarity index 54%
rename from spring/src/main/resources/application.properties
rename to src/main/resources/application.properties
index 458a12e23..72fd15f05 100644
--- a/spring/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -6,7 +6,7 @@ email.sender: Markus Malkusch
;
;spring.mail.host: smtp.example.net
-spring.datasource.url=jdbc:hsqldb:file:db
+#spring.datasource.url=jdbc:hsqldb:file:db
spring.jpa.hibernate.ddl-auto=update
async.queueCapacity: 1000
@@ -16,3 +16,14 @@ recovery.lifetime: P1D
; The length of the generated password.
recovery.length: 32
+
+spring.datasource.username=notejam
+spring.datasource.password=notejam
+
+spring.datasource.driver-class-name=com.mysql.jdbc.Driver
+spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
+spring.datasource.url=jdbc:mysql://localhost:3306/notejam
+
+#spring.datasource.driver-class-name=org.postgresql.Driver
+#spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL9Dialect
+#spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
\ No newline at end of file
diff --git a/spring/src/main/resources/messages_de.properties b/src/main/resources/messages_de.properties
similarity index 100%
rename from spring/src/main/resources/messages_de.properties
rename to src/main/resources/messages_de.properties
diff --git a/spring/src/main/resources/messages_en.properties b/src/main/resources/messages_en.properties
similarity index 100%
rename from spring/src/main/resources/messages_en.properties
rename to src/main/resources/messages_en.properties
diff --git a/spring/src/main/resources/static/css/style.css b/src/main/resources/static/css/style.css
similarity index 100%
rename from spring/src/main/resources/static/css/style.css
rename to src/main/resources/static/css/style.css
diff --git a/spring/src/main/resources/templates/error.html b/src/main/resources/templates/error.html
similarity index 100%
rename from spring/src/main/resources/templates/error.html
rename to src/main/resources/templates/error.html
diff --git a/spring/src/main/resources/templates/layout.html b/src/main/resources/templates/layout.html
similarity index 100%
rename from spring/src/main/resources/templates/layout.html
rename to src/main/resources/templates/layout.html
diff --git a/spring/src/main/resources/templates/note/create.html b/src/main/resources/templates/note/create.html
similarity index 100%
rename from spring/src/main/resources/templates/note/create.html
rename to src/main/resources/templates/note/create.html
diff --git a/spring/src/main/resources/templates/note/delete.html b/src/main/resources/templates/note/delete.html
similarity index 100%
rename from spring/src/main/resources/templates/note/delete.html
rename to src/main/resources/templates/note/delete.html
diff --git a/spring/src/main/resources/templates/note/edit.html b/src/main/resources/templates/note/edit.html
similarity index 100%
rename from spring/src/main/resources/templates/note/edit.html
rename to src/main/resources/templates/note/edit.html
diff --git a/spring/src/main/resources/templates/note/view.html b/src/main/resources/templates/note/view.html
similarity index 100%
rename from spring/src/main/resources/templates/note/view.html
rename to src/main/resources/templates/note/view.html
diff --git a/spring/src/main/resources/templates/notes.html b/src/main/resources/templates/notes.html
similarity index 100%
rename from spring/src/main/resources/templates/notes.html
rename to src/main/resources/templates/notes.html
diff --git a/spring/src/main/resources/templates/pad/create.html b/src/main/resources/templates/pad/create.html
similarity index 100%
rename from spring/src/main/resources/templates/pad/create.html
rename to src/main/resources/templates/pad/create.html
diff --git a/spring/src/main/resources/templates/pad/delete.html b/src/main/resources/templates/pad/delete.html
similarity index 100%
rename from spring/src/main/resources/templates/pad/delete.html
rename to src/main/resources/templates/pad/delete.html
diff --git a/spring/src/main/resources/templates/pad/edit.html b/src/main/resources/templates/pad/edit.html
similarity index 100%
rename from spring/src/main/resources/templates/pad/edit.html
rename to src/main/resources/templates/pad/edit.html
diff --git a/spring/src/main/resources/templates/user/account.html b/src/main/resources/templates/user/account.html
similarity index 100%
rename from spring/src/main/resources/templates/user/account.html
rename to src/main/resources/templates/user/account.html
diff --git a/spring/src/main/resources/templates/user/forgot-password.html b/src/main/resources/templates/user/forgot-password.html
similarity index 100%
rename from spring/src/main/resources/templates/user/forgot-password.html
rename to src/main/resources/templates/user/forgot-password.html
diff --git a/spring/src/main/resources/templates/user/login.html b/src/main/resources/templates/user/login.html
similarity index 100%
rename from spring/src/main/resources/templates/user/login.html
rename to src/main/resources/templates/user/login.html
diff --git a/spring/src/main/resources/templates/user/reveal-password.html b/src/main/resources/templates/user/reveal-password.html
similarity index 100%
rename from spring/src/main/resources/templates/user/reveal-password.html
rename to src/main/resources/templates/user/reveal-password.html
diff --git a/spring/src/main/resources/templates/user/signup.html b/src/main/resources/templates/user/signup.html
similarity index 100%
rename from spring/src/main/resources/templates/user/signup.html
rename to src/main/resources/templates/user/signup.html
diff --git a/spring/src/test/java/net/notejam/spring/helper/converter/StringToPeriodConverterTest.java b/src/test/java/net/notejam/spring/helper/converter/StringToPeriodConverterTest.java
similarity index 100%
rename from spring/src/test/java/net/notejam/spring/helper/converter/StringToPeriodConverterTest.java
rename to src/test/java/net/notejam/spring/helper/converter/StringToPeriodConverterTest.java
diff --git a/spring/src/test/java/net/notejam/spring/note/CreateNoteControllerTest.java b/src/test/java/net/notejam/spring/note/CreateNoteControllerTest.java
similarity index 100%
rename from spring/src/test/java/net/notejam/spring/note/CreateNoteControllerTest.java
rename to src/test/java/net/notejam/spring/note/CreateNoteControllerTest.java
diff --git a/spring/src/test/java/net/notejam/spring/note/DeleteNoteControllerTest.java b/src/test/java/net/notejam/spring/note/DeleteNoteControllerTest.java
similarity index 100%
rename from spring/src/test/java/net/notejam/spring/note/DeleteNoteControllerTest.java
rename to src/test/java/net/notejam/spring/note/DeleteNoteControllerTest.java
diff --git a/spring/src/test/java/net/notejam/spring/note/EditNoteControllerTest.java b/src/test/java/net/notejam/spring/note/EditNoteControllerTest.java
similarity index 100%
rename from spring/src/test/java/net/notejam/spring/note/EditNoteControllerTest.java
rename to src/test/java/net/notejam/spring/note/EditNoteControllerTest.java
diff --git a/spring/src/test/java/net/notejam/spring/note/NoteServiceTest.java b/src/test/java/net/notejam/spring/note/NoteServiceTest.java
similarity index 100%
rename from spring/src/test/java/net/notejam/spring/note/NoteServiceTest.java
rename to src/test/java/net/notejam/spring/note/NoteServiceTest.java
diff --git a/spring/src/test/java/net/notejam/spring/note/ViewNoteControllerTest.java b/src/test/java/net/notejam/spring/note/ViewNoteControllerTest.java
similarity index 100%
rename from spring/src/test/java/net/notejam/spring/note/ViewNoteControllerTest.java
rename to src/test/java/net/notejam/spring/note/ViewNoteControllerTest.java
diff --git a/spring/src/test/java/net/notejam/spring/pad/CreatePadControllerTest.java b/src/test/java/net/notejam/spring/pad/CreatePadControllerTest.java
similarity index 100%
rename from spring/src/test/java/net/notejam/spring/pad/CreatePadControllerTest.java
rename to src/test/java/net/notejam/spring/pad/CreatePadControllerTest.java
diff --git a/spring/src/test/java/net/notejam/spring/pad/DeletePadControllerTest.java b/src/test/java/net/notejam/spring/pad/DeletePadControllerTest.java
similarity index 100%
rename from spring/src/test/java/net/notejam/spring/pad/DeletePadControllerTest.java
rename to src/test/java/net/notejam/spring/pad/DeletePadControllerTest.java
diff --git a/spring/src/test/java/net/notejam/spring/pad/EditPadControllerTest.java b/src/test/java/net/notejam/spring/pad/EditPadControllerTest.java
similarity index 100%
rename from spring/src/test/java/net/notejam/spring/pad/EditPadControllerTest.java
rename to src/test/java/net/notejam/spring/pad/EditPadControllerTest.java
diff --git a/spring/src/test/java/net/notejam/spring/pad/ViewPadControllerTest.java b/src/test/java/net/notejam/spring/pad/ViewPadControllerTest.java
similarity index 100%
rename from spring/src/test/java/net/notejam/spring/pad/ViewPadControllerTest.java
rename to src/test/java/net/notejam/spring/pad/ViewPadControllerTest.java
diff --git a/spring/src/test/java/net/notejam/spring/security/LoginControllerTest.java b/src/test/java/net/notejam/spring/security/LoginControllerTest.java
similarity index 100%
rename from spring/src/test/java/net/notejam/spring/security/LoginControllerTest.java
rename to src/test/java/net/notejam/spring/security/LoginControllerTest.java
diff --git a/spring/src/test/java/net/notejam/spring/security/SecurityServiceTest.java b/src/test/java/net/notejam/spring/security/SecurityServiceTest.java
similarity index 100%
rename from spring/src/test/java/net/notejam/spring/security/SecurityServiceTest.java
rename to src/test/java/net/notejam/spring/security/SecurityServiceTest.java
diff --git a/spring/src/test/java/net/notejam/spring/security/owner/PermitOwnerAspectTest.java b/src/test/java/net/notejam/spring/security/owner/PermitOwnerAspectTest.java
similarity index 100%
rename from spring/src/test/java/net/notejam/spring/security/owner/PermitOwnerAspectTest.java
rename to src/test/java/net/notejam/spring/security/owner/PermitOwnerAspectTest.java
diff --git a/spring/src/test/java/net/notejam/spring/security/owner/PermitOwnerIntegrationTest.java b/src/test/java/net/notejam/spring/security/owner/PermitOwnerIntegrationTest.java
similarity index 100%
rename from spring/src/test/java/net/notejam/spring/security/owner/PermitOwnerIntegrationTest.java
rename to src/test/java/net/notejam/spring/security/owner/PermitOwnerIntegrationTest.java
diff --git a/spring/src/test/java/net/notejam/spring/test/IntegrationTest.java b/src/test/java/net/notejam/spring/test/IntegrationTest.java
similarity index 100%
rename from spring/src/test/java/net/notejam/spring/test/IntegrationTest.java
rename to src/test/java/net/notejam/spring/test/IntegrationTest.java
diff --git a/spring/src/test/java/net/notejam/spring/test/MockMvcProvider.java b/src/test/java/net/notejam/spring/test/MockMvcProvider.java
similarity index 100%
rename from spring/src/test/java/net/notejam/spring/test/MockMvcProvider.java
rename to src/test/java/net/notejam/spring/test/MockMvcProvider.java
diff --git a/spring/src/test/java/net/notejam/spring/test/UriUtil.java b/src/test/java/net/notejam/spring/test/UriUtil.java
similarity index 100%
rename from spring/src/test/java/net/notejam/spring/test/UriUtil.java
rename to src/test/java/net/notejam/spring/test/UriUtil.java
diff --git a/spring/src/test/java/net/notejam/spring/user/SignedUpUserProvider.java b/src/test/java/net/notejam/spring/user/SignedUpUserProvider.java
similarity index 100%
rename from spring/src/test/java/net/notejam/spring/user/SignedUpUserProvider.java
rename to src/test/java/net/notejam/spring/user/SignedUpUserProvider.java
diff --git a/spring/src/test/java/net/notejam/spring/user/UserServiceTest.java b/src/test/java/net/notejam/spring/user/UserServiceTest.java
similarity index 100%
rename from spring/src/test/java/net/notejam/spring/user/UserServiceTest.java
rename to src/test/java/net/notejam/spring/user/UserServiceTest.java
diff --git a/spring/src/test/java/net/notejam/spring/user/signup/SignupControllerTest.java b/src/test/java/net/notejam/spring/user/signup/SignupControllerTest.java
similarity index 100%
rename from spring/src/test/java/net/notejam/spring/user/signup/SignupControllerTest.java
rename to src/test/java/net/notejam/spring/user/signup/SignupControllerTest.java
diff --git a/src/test/resources/application-test.properties b/src/test/resources/application-test.properties
new file mode 100644
index 000000000..e174f9256
--- /dev/null
+++ b/src/test/resources/application-test.properties
@@ -0,0 +1,3 @@
+spring.datasource.url=jdbc:hsqldb:mem:test
+spring.datasource.driver-class-name=org.hsqldb.jdbc.JDBCDriver
+spring.jpa.database-platform=org.hibernate.dialect.HSQLDialect
\ No newline at end of file
diff --git a/symfony/README.rst b/symfony/README.rst
deleted file mode 100644
index 880053b9f..000000000
--- a/symfony/README.rst
+++ /dev/null
@@ -1,90 +0,0 @@
-****************
-Notejam: Symfony
-****************
-
-Notejam application implemented using `Symfony `_ framework.
-
-Symfony version: 2.7
-
-The application is maintained by `@aminemat `_.
-
-==========================
-Installation and launching
-==========================
-
------
-Clone
------
-
-Clone the repo:
-
-.. code-block:: bash
-
- $ git clone git@github.com:komarserjio/notejam.git YOUR_PROJECT_DIR/
-
--------
-Install
--------
-
-Install `composer `_
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/symfony/notejam
- $ curl -s https://getcomposer.org/installer | php
-
-Install dependencies
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/symfony/notejam
- $ php composer.phar install
-
-Create database schema
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/symfony/notejam
- $ php app/console doctrine:schema:update --force
-
-
-------
-Launch
-------
-
-Start built-in symfony web server:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/symfony/notejam/
- $ php app/console server:run
-
-Go to http://localhost:8000/ in your browser.
-
----------
-Run tests
----------
-
-Run tests:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/symfony/notejam/
- $ ./bin/phpunit -c app/
-
-
-============
-Contribution
-============
-
-
-Do you have php/symfony experience? Help the app to follow php and symfony best practices.
-
-Please send your pull requests in the ``master`` branch.
-Always prepend your commits with framework name:
-
-.. code-block:: bash
-
- Symfony: Implemented sign in functionality
-
-Read `contribution guide `_ for details.
diff --git a/symfony/notejam/.gitignore b/symfony/notejam/.gitignore
deleted file mode 100644
index f50742e52..000000000
--- a/symfony/notejam/.gitignore
+++ /dev/null
@@ -1,11 +0,0 @@
-/web/bundles/
-/app/bootstrap.php.cache
-/app/cache/*
-/app/logs/*
-!app/cache/.gitkeep
-!app/logs/.gitkeep
-/build/
-/vendor/
-/bin/
-/composer.phar
-.idea
diff --git a/symfony/notejam/.travis.yml b/symfony/notejam/.travis.yml
deleted file mode 100644
index 955248ad1..000000000
--- a/symfony/notejam/.travis.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-language: php
-
-php:
- - 5.3.3
- - 5.3
- - 5.4
-
-before_script: composer install -n
-
-script: phpunit -c app
diff --git a/symfony/notejam/LICENSE b/symfony/notejam/LICENSE
deleted file mode 100644
index 88a57f8d8..000000000
--- a/symfony/notejam/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-2013 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/symfony/notejam/app/.htaccess b/symfony/notejam/app/.htaccess
deleted file mode 100644
index 3418e55a6..000000000
--- a/symfony/notejam/app/.htaccess
+++ /dev/null
@@ -1 +0,0 @@
-deny from all
\ No newline at end of file
diff --git a/symfony/notejam/app/AppCache.php b/symfony/notejam/app/AppCache.php
deleted file mode 100644
index ddb51db05..000000000
--- a/symfony/notejam/app/AppCache.php
+++ /dev/null
@@ -1,9 +0,0 @@
-getEnvironment(), array('dev', 'test'))) {
- $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
- $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
- $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
- $bundles[] = new Liip\FunctionalTestBundle\LiipFunctionalTestBundle();
- $bundles[] = new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle();
- }
-
- return $bundles;
- }
-
- /**
- * @inheritdoc
- */
- public function registerContainerConfiguration(LoaderInterface $loader)
- {
- $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
- }
-}
diff --git a/symfony/notejam/app/Resources/translations/messages.fr.xlf b/symfony/notejam/app/Resources/translations/messages.fr.xlf
deleted file mode 100644
index fd59e6c16..000000000
--- a/symfony/notejam/app/Resources/translations/messages.fr.xlf
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
- Symfony2 is great
- J'aime Symfony2
-
-
-
-
diff --git a/symfony/notejam/app/Resources/views/base.html.twig b/symfony/notejam/app/Resources/views/base.html.twig
deleted file mode 100644
index be7a44a85..000000000
--- a/symfony/notejam/app/Resources/views/base.html.twig
+++ /dev/null
@@ -1,75 +0,0 @@
-
-
-
-
-
-
-
-
-
- {% block title %}Notejam{% endblock %}
-
-
-
-
-
-
- {% block stylesheets %}
-
-
-
-
-
-
-
- {% endblock %}
-
-
-
-
-
-
-
- {% block pads %}
- {{ render(controller('AppBundle:Pad:list')) }}
- {% endblock %}
-
-
- {% for label, flashes in app.session.flashbag.all %}
- {% for flash in flashes %}
-
- {{ flash }}
-
- {% endfor %}
- {% endfor %}
-
- {% block body %}{% endblock %}
-
-
-
-
-
- {% block javascripts %}{% endblock %}
-
-
diff --git a/symfony/notejam/app/Resources/views/fields.html.twig b/symfony/notejam/app/Resources/views/fields.html.twig
deleted file mode 100644
index 930b37b8d..000000000
--- a/symfony/notejam/app/Resources/views/fields.html.twig
+++ /dev/null
@@ -1,13 +0,0 @@
-{% form_theme form _self %}
-
-{% block form_errors %}
- {% spaceless %}
- {% if errors|length > 0 %}
-
- {% for error in errors %}
- {{ error.message }}
- {% endfor %}
-
- {% endif %}
- {% endspaceless %}
-{% endblock form_errors %}
diff --git a/symfony/notejam/app/Resources/views/user.html.twig b/symfony/notejam/app/Resources/views/user.html.twig
deleted file mode 100644
index 91f66a7cb..000000000
--- a/symfony/notejam/app/Resources/views/user.html.twig
+++ /dev/null
@@ -1,5 +0,0 @@
-{% extends 'base.html.twig' %}
-
-{% block content_class %}sixteen columns content-area{% endblock %}
-
-{% block pads %}{% endblock %}
diff --git a/symfony/notejam/app/SymfonyRequirements.php b/symfony/notejam/app/SymfonyRequirements.php
deleted file mode 100644
index 28b0dcdbf..000000000
--- a/symfony/notejam/app/SymfonyRequirements.php
+++ /dev/null
@@ -1,764 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-/*
- * Users of PHP 5.2 should be able to run the requirements checks.
- * This is why the file and all classes must be compatible with PHP 5.2+
- * (e.g. not using namespaces and closures).
- *
- * ************** CAUTION **************
- *
- * DO NOT EDIT THIS FILE as it will be overridden by Composer as part of
- * the installation/update process. The original file resides in the
- * SensioDistributionBundle.
- *
- * ************** CAUTION **************
- */
-
-/**
- * Represents a single PHP requirement, e.g. an installed extension.
- * It can be a mandatory requirement or an optional recommendation.
- * There is a special subclass, named PhpIniRequirement, to check a php.ini configuration.
- *
- * @author Tobias Schultze
- */
-class Requirement
-{
- private $fulfilled;
- private $testMessage;
- private $helpText;
- private $helpHtml;
- private $optional;
-
- /**
- * Constructor that initializes the requirement.
- *
- * @param bool $fulfilled Whether the requirement is fulfilled
- * @param string $testMessage The message for testing the requirement
- * @param string $helpHtml The help text formatted in HTML for resolving the problem
- * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
- * @param bool $optional Whether this is only an optional recommendation not a mandatory requirement
- */
- public function __construct($fulfilled, $testMessage, $helpHtml, $helpText = null, $optional = false)
- {
- $this->fulfilled = (bool) $fulfilled;
- $this->testMessage = (string) $testMessage;
- $this->helpHtml = (string) $helpHtml;
- $this->helpText = null === $helpText ? strip_tags($this->helpHtml) : (string) $helpText;
- $this->optional = (bool) $optional;
- }
-
- /**
- * Returns whether the requirement is fulfilled.
- *
- * @return bool true if fulfilled, otherwise false
- */
- public function isFulfilled()
- {
- return $this->fulfilled;
- }
-
- /**
- * Returns the message for testing the requirement.
- *
- * @return string The test message
- */
- public function getTestMessage()
- {
- return $this->testMessage;
- }
-
- /**
- * Returns the help text for resolving the problem.
- *
- * @return string The help text
- */
- public function getHelpText()
- {
- return $this->helpText;
- }
-
- /**
- * Returns the help text formatted in HTML.
- *
- * @return string The HTML help
- */
- public function getHelpHtml()
- {
- return $this->helpHtml;
- }
-
- /**
- * Returns whether this is only an optional recommendation and not a mandatory requirement.
- *
- * @return bool true if optional, false if mandatory
- */
- public function isOptional()
- {
- return $this->optional;
- }
-}
-
-/**
- * Represents a PHP requirement in form of a php.ini configuration.
- *
- * @author Tobias Schultze
- */
-class PhpIniRequirement extends Requirement
-{
- /**
- * Constructor that initializes the requirement.
- *
- * @param string $cfgName The configuration name used for ini_get()
- * @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false,
- * or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
- * @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
- * This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
- * Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
- * @param string|null $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived)
- * @param string|null $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived)
- * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
- * @param bool $optional Whether this is only an optional recommendation not a mandatory requirement
- */
- public function __construct($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null, $optional = false)
- {
- $cfgValue = ini_get($cfgName);
-
- if (is_callable($evaluation)) {
- if (null === $testMessage || null === $helpHtml) {
- throw new InvalidArgumentException('You must provide the parameters testMessage and helpHtml for a callback evaluation.');
- }
-
- $fulfilled = call_user_func($evaluation, $cfgValue);
- } else {
- if (null === $testMessage) {
- $testMessage = sprintf('%s %s be %s in php.ini',
- $cfgName,
- $optional ? 'should' : 'must',
- $evaluation ? 'enabled' : 'disabled'
- );
- }
-
- if (null === $helpHtml) {
- $helpHtml = sprintf('Set %s to %s in php.ini* .',
- $cfgName,
- $evaluation ? 'on' : 'off'
- );
- }
-
- $fulfilled = $evaluation == $cfgValue;
- }
-
- parent::__construct($fulfilled || ($approveCfgAbsence && false === $cfgValue), $testMessage, $helpHtml, $helpText, $optional);
- }
-}
-
-/**
- * A RequirementCollection represents a set of Requirement instances.
- *
- * @author Tobias Schultze
- */
-class RequirementCollection implements IteratorAggregate
-{
- private $requirements = array();
-
- /**
- * Gets the current RequirementCollection as an Iterator.
- *
- * @return Traversable A Traversable interface
- */
- public function getIterator()
- {
- return new ArrayIterator($this->requirements);
- }
-
- /**
- * Adds a Requirement.
- *
- * @param Requirement $requirement A Requirement instance
- */
- public function add(Requirement $requirement)
- {
- $this->requirements[] = $requirement;
- }
-
- /**
- * Adds a mandatory requirement.
- *
- * @param bool $fulfilled Whether the requirement is fulfilled
- * @param string $testMessage The message for testing the requirement
- * @param string $helpHtml The help text formatted in HTML for resolving the problem
- * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
- */
- public function addRequirement($fulfilled, $testMessage, $helpHtml, $helpText = null)
- {
- $this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, false));
- }
-
- /**
- * Adds an optional recommendation.
- *
- * @param bool $fulfilled Whether the recommendation is fulfilled
- * @param string $testMessage The message for testing the recommendation
- * @param string $helpHtml The help text formatted in HTML for resolving the problem
- * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
- */
- public function addRecommendation($fulfilled, $testMessage, $helpHtml, $helpText = null)
- {
- $this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, true));
- }
-
- /**
- * Adds a mandatory requirement in form of a php.ini configuration.
- *
- * @param string $cfgName The configuration name used for ini_get()
- * @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false,
- * or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
- * @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
- * This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
- * Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
- * @param string $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived)
- * @param string $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived)
- * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
- */
- public function addPhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null)
- {
- $this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, false));
- }
-
- /**
- * Adds an optional recommendation in form of a php.ini configuration.
- *
- * @param string $cfgName The configuration name used for ini_get()
- * @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false,
- * or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
- * @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
- * This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
- * Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
- * @param string $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived)
- * @param string $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived)
- * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
- */
- public function addPhpIniRecommendation($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null)
- {
- $this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, true));
- }
-
- /**
- * Adds a requirement collection to the current set of requirements.
- *
- * @param RequirementCollection $collection A RequirementCollection instance
- */
- public function addCollection(RequirementCollection $collection)
- {
- $this->requirements = array_merge($this->requirements, $collection->all());
- }
-
- /**
- * Returns both requirements and recommendations.
- *
- * @return array Array of Requirement instances
- */
- public function all()
- {
- return $this->requirements;
- }
-
- /**
- * Returns all mandatory requirements.
- *
- * @return array Array of Requirement instances
- */
- public function getRequirements()
- {
- $array = array();
- foreach ($this->requirements as $req) {
- if (!$req->isOptional()) {
- $array[] = $req;
- }
- }
-
- return $array;
- }
-
- /**
- * Returns the mandatory requirements that were not met.
- *
- * @return array Array of Requirement instances
- */
- public function getFailedRequirements()
- {
- $array = array();
- foreach ($this->requirements as $req) {
- if (!$req->isFulfilled() && !$req->isOptional()) {
- $array[] = $req;
- }
- }
-
- return $array;
- }
-
- /**
- * Returns all optional recommendations.
- *
- * @return array Array of Requirement instances
- */
- public function getRecommendations()
- {
- $array = array();
- foreach ($this->requirements as $req) {
- if ($req->isOptional()) {
- $array[] = $req;
- }
- }
-
- return $array;
- }
-
- /**
- * Returns the recommendations that were not met.
- *
- * @return array Array of Requirement instances
- */
- public function getFailedRecommendations()
- {
- $array = array();
- foreach ($this->requirements as $req) {
- if (!$req->isFulfilled() && $req->isOptional()) {
- $array[] = $req;
- }
- }
-
- return $array;
- }
-
- /**
- * Returns whether a php.ini configuration is not correct.
- *
- * @return bool php.ini configuration problem?
- */
- public function hasPhpIniConfigIssue()
- {
- foreach ($this->requirements as $req) {
- if (!$req->isFulfilled() && $req instanceof PhpIniRequirement) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Returns the PHP configuration file (php.ini) path.
- *
- * @return string|false php.ini file path
- */
- public function getPhpIniConfigPath()
- {
- return get_cfg_var('cfg_file_path');
- }
-}
-
-/**
- * This class specifies all requirements and optional recommendations that
- * are necessary to run the Symfony Standard Edition.
- *
- * @author Tobias Schultze
- * @author Fabien Potencier
- */
-class SymfonyRequirements extends RequirementCollection
-{
- const REQUIRED_PHP_VERSION = '5.3.3';
-
- /**
- * Constructor that initializes the requirements.
- */
- public function __construct()
- {
- /* mandatory requirements follow */
-
- $installedPhpVersion = phpversion();
-
- $this->addRequirement(
- version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>='),
- sprintf('PHP version must be at least %s (%s installed)', self::REQUIRED_PHP_VERSION, $installedPhpVersion),
- sprintf('You are running PHP version "%s ", but Symfony needs at least PHP "%s " to run.
- Before using Symfony, upgrade your PHP installation, preferably to the latest version.',
- $installedPhpVersion, self::REQUIRED_PHP_VERSION),
- sprintf('Install PHP %s or newer (installed version is %s)', self::REQUIRED_PHP_VERSION, $installedPhpVersion)
- );
-
- $this->addRequirement(
- version_compare($installedPhpVersion, '5.3.16', '!='),
- 'PHP version must not be 5.3.16 as Symfony won\'t work properly with it',
- 'Install PHP 5.3.17 or newer (or downgrade to an earlier PHP version)'
- );
-
- $this->addRequirement(
- is_dir(__DIR__.'/../vendor/composer'),
- 'Vendor libraries must be installed',
- 'Vendor libraries are missing. Install composer following instructions from http://getcomposer.org/ . '.
- 'Then run "php composer.phar install " to install them.'
- );
-
- $cacheDir = is_dir(__DIR__.'/../var/cache') ? __DIR__.'/../var/cache' : __DIR__.'/cache';
-
- $this->addRequirement(
- is_writable($cacheDir),
- 'app/cache/ or var/cache/ directory must be writable',
- 'Change the permissions of either "app/cache/ " or "var/cache/ " directory so that the web server can write into it.'
- );
-
- $logsDir = is_dir(__DIR__.'/../var/logs') ? __DIR__.'/../var/logs' : __DIR__.'/logs';
-
- $this->addRequirement(
- is_writable($logsDir),
- 'app/logs/ or var/logs/ directory must be writable',
- 'Change the permissions of either "app/logs/ " or "var/logs/ " directory so that the web server can write into it.'
- );
-
- $this->addPhpIniRequirement(
- 'date.timezone', true, false,
- 'date.timezone setting must be set',
- 'Set the "date.timezone " setting in php.ini* (like Europe/Paris).'
- );
-
- if (version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>=')) {
- $timezones = array();
- foreach (DateTimeZone::listAbbreviations() as $abbreviations) {
- foreach ($abbreviations as $abbreviation) {
- $timezones[$abbreviation['timezone_id']] = true;
- }
- }
-
- $this->addRequirement(
- isset($timezones[@date_default_timezone_get()]),
- sprintf('Configured default timezone "%s" must be supported by your installation of PHP', @date_default_timezone_get()),
- 'Your default timezone is not supported by PHP. Check for typos in your php.ini file and have a look at the list of deprecated timezones at http://php.net/manual/en/timezones.others.php .'
- );
- }
-
- $this->addRequirement(
- function_exists('iconv'),
- 'iconv() must be available',
- 'Install and enable the iconv extension.'
- );
-
- $this->addRequirement(
- function_exists('json_encode'),
- 'json_encode() must be available',
- 'Install and enable the JSON extension.'
- );
-
- $this->addRequirement(
- function_exists('session_start'),
- 'session_start() must be available',
- 'Install and enable the session extension.'
- );
-
- $this->addRequirement(
- function_exists('ctype_alpha'),
- 'ctype_alpha() must be available',
- 'Install and enable the ctype extension.'
- );
-
- $this->addRequirement(
- function_exists('token_get_all'),
- 'token_get_all() must be available',
- 'Install and enable the Tokenizer extension.'
- );
-
- $this->addRequirement(
- function_exists('simplexml_import_dom'),
- 'simplexml_import_dom() must be available',
- 'Install and enable the SimpleXML extension.'
- );
-
- if (function_exists('apc_store') && ini_get('apc.enabled')) {
- if (version_compare($installedPhpVersion, '5.4.0', '>=')) {
- $this->addRequirement(
- version_compare(phpversion('apc'), '3.1.13', '>='),
- 'APC version must be at least 3.1.13 when using PHP 5.4',
- 'Upgrade your APC extension (3.1.13+).'
- );
- } else {
- $this->addRequirement(
- version_compare(phpversion('apc'), '3.0.17', '>='),
- 'APC version must be at least 3.0.17',
- 'Upgrade your APC extension (3.0.17+).'
- );
- }
- }
-
- $this->addPhpIniRequirement('detect_unicode', false);
-
- if (extension_loaded('suhosin')) {
- $this->addPhpIniRequirement(
- 'suhosin.executor.include.whitelist',
- create_function('$cfgValue', 'return false !== stripos($cfgValue, "phar");'),
- false,
- 'suhosin.executor.include.whitelist must be configured correctly in php.ini',
- 'Add "phar " to suhosin.executor.include.whitelist in php.ini* .'
- );
- }
-
- if (extension_loaded('xdebug')) {
- $this->addPhpIniRequirement(
- 'xdebug.show_exception_trace', false, true
- );
-
- $this->addPhpIniRequirement(
- 'xdebug.scream', false, true
- );
-
- $this->addPhpIniRecommendation(
- 'xdebug.max_nesting_level',
- create_function('$cfgValue', 'return $cfgValue > 100;'),
- true,
- 'xdebug.max_nesting_level should be above 100 in php.ini',
- 'Set "xdebug.max_nesting_level " to e.g. "250 " in php.ini* to stop Xdebug\'s infinite recursion protection erroneously throwing a fatal error in your project.'
- );
- }
-
- $pcreVersion = defined('PCRE_VERSION') ? (float) PCRE_VERSION : null;
-
- $this->addRequirement(
- null !== $pcreVersion,
- 'PCRE extension must be available',
- 'Install the PCRE extension (version 8.0+).'
- );
-
- if (extension_loaded('mbstring')) {
- $this->addPhpIniRequirement(
- 'mbstring.func_overload',
- create_function('$cfgValue', 'return (int) $cfgValue === 0;'),
- true,
- 'string functions should not be overloaded',
- 'Set "mbstring.func_overload " to 0 in php.ini* to disable function overloading by the mbstring extension.'
- );
- }
-
- /* optional recommendations follow */
-
- if (file_exists(__DIR__.'/../vendor/composer')) {
- require_once __DIR__.'/../vendor/autoload.php';
-
- try {
- $r = new ReflectionClass('Sensio\Bundle\DistributionBundle\SensioDistributionBundle');
-
- $contents = file_get_contents(dirname($r->getFileName()).'/Resources/skeleton/app/SymfonyRequirements.php');
- } catch (ReflectionException $e) {
- $contents = '';
- }
- $this->addRecommendation(
- file_get_contents(__FILE__) === $contents,
- 'Requirements file should be up-to-date',
- 'Your requirements file is outdated. Run composer install and re-check your configuration.'
- );
- }
-
- $this->addRecommendation(
- version_compare($installedPhpVersion, '5.3.4', '>='),
- 'You should use at least PHP 5.3.4 due to PHP bug #52083 in earlier versions',
- 'Your project might malfunction randomly due to PHP bug #52083 ("Notice: Trying to get property of non-object"). Install PHP 5.3.4 or newer.'
- );
-
- $this->addRecommendation(
- version_compare($installedPhpVersion, '5.3.8', '>='),
- 'When using annotations you should have at least PHP 5.3.8 due to PHP bug #55156',
- 'Install PHP 5.3.8 or newer if your project uses annotations.'
- );
-
- $this->addRecommendation(
- version_compare($installedPhpVersion, '5.4.0', '!='),
- 'You should not use PHP 5.4.0 due to the PHP bug #61453',
- 'Your project might not work properly due to the PHP bug #61453 ("Cannot dump definitions which have method calls"). Install PHP 5.4.1 or newer.'
- );
-
- $this->addRecommendation(
- version_compare($installedPhpVersion, '5.4.11', '>='),
- 'When using the logout handler from the Symfony Security Component, you should have at least PHP 5.4.11 due to PHP bug #63379 (as a workaround, you can also set invalidate_session to false in the security logout handler configuration)',
- 'Install PHP 5.4.11 or newer if your project uses the logout handler from the Symfony Security Component.'
- );
-
- $this->addRecommendation(
- (version_compare($installedPhpVersion, '5.3.18', '>=') && version_compare($installedPhpVersion, '5.4.0', '<'))
- ||
- version_compare($installedPhpVersion, '5.4.8', '>='),
- 'You should use PHP 5.3.18+ or PHP 5.4.8+ to always get nice error messages for fatal errors in the development environment due to PHP bug #61767/#60909',
- 'Install PHP 5.3.18+ or PHP 5.4.8+ if you want nice error messages for all fatal errors in the development environment.'
- );
-
- if (null !== $pcreVersion) {
- $this->addRecommendation(
- $pcreVersion >= 8.0,
- sprintf('PCRE extension should be at least version 8.0 (%s installed)', $pcreVersion),
- 'PCRE 8.0+ is preconfigured in PHP since 5.3.2 but you are using an outdated version of it. Symfony probably works anyway but it is recommended to upgrade your PCRE extension.'
- );
- }
-
- $this->addRecommendation(
- class_exists('DomDocument'),
- 'PHP-DOM and PHP-XML modules should be installed',
- 'Install and enable the PHP-DOM and the PHP-XML modules.'
- );
-
- $this->addRecommendation(
- function_exists('mb_strlen'),
- 'mb_strlen() should be available',
- 'Install and enable the mbstring extension.'
- );
-
- $this->addRecommendation(
- function_exists('iconv'),
- 'iconv() should be available',
- 'Install and enable the iconv extension.'
- );
-
- $this->addRecommendation(
- function_exists('utf8_decode'),
- 'utf8_decode() should be available',
- 'Install and enable the XML extension.'
- );
-
- $this->addRecommendation(
- function_exists('filter_var'),
- 'filter_var() should be available',
- 'Install and enable the filter extension.'
- );
-
- if (!defined('PHP_WINDOWS_VERSION_BUILD')) {
- $this->addRecommendation(
- function_exists('posix_isatty'),
- 'posix_isatty() should be available',
- 'Install and enable the php_posix extension (used to colorize the CLI output).'
- );
- }
-
- $this->addRecommendation(
- extension_loaded('intl'),
- 'intl extension should be available',
- 'Install and enable the intl extension (used for validators).'
- );
-
- if (extension_loaded('intl')) {
- // in some WAMP server installations, new Collator() returns null
- $this->addRecommendation(
- null !== new Collator('fr_FR'),
- 'intl extension should be correctly configured',
- 'The intl extension does not behave properly. This problem is typical on PHP 5.3.X x64 WIN builds.'
- );
-
- // check for compatible ICU versions (only done when you have the intl extension)
- if (defined('INTL_ICU_VERSION')) {
- $version = INTL_ICU_VERSION;
- } else {
- $reflector = new ReflectionExtension('intl');
-
- ob_start();
- $reflector->info();
- $output = strip_tags(ob_get_clean());
-
- preg_match('/^ICU version +(?:=> )?(.*)$/m', $output, $matches);
- $version = $matches[1];
- }
-
- $this->addRecommendation(
- version_compare($version, '4.0', '>='),
- 'intl ICU version should be at least 4+',
- 'Upgrade your intl extension with a newer ICU version (4+).'
- );
-
- $this->addPhpIniRecommendation(
- 'intl.error_level',
- create_function('$cfgValue', 'return (int) $cfgValue === 0;'),
- true,
- 'intl.error_level should be 0 in php.ini',
- 'Set "intl.error_level " to "0 " in php.ini* to inhibit the messages when an error occurs in ICU functions.'
- );
- }
-
- $accelerator =
- (extension_loaded('eaccelerator') && ini_get('eaccelerator.enable'))
- ||
- (extension_loaded('apc') && ini_get('apc.enabled'))
- ||
- (extension_loaded('Zend Optimizer+') && ini_get('zend_optimizerplus.enable'))
- ||
- (extension_loaded('Zend OPcache') && ini_get('opcache.enable'))
- ||
- (extension_loaded('xcache') && ini_get('xcache.cacher'))
- ||
- (extension_loaded('wincache') && ini_get('wincache.ocenabled'))
- ;
-
- $this->addRecommendation(
- $accelerator,
- 'a PHP accelerator should be installed',
- 'Install and/or enable a PHP accelerator (highly recommended).'
- );
-
- if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
- $this->addRecommendation(
- $this->getRealpathCacheSize() > 1000,
- 'realpath_cache_size should be above 1024 in php.ini',
- 'Set "realpath_cache_size " to e.g. "1024 " in php.ini* to improve performance on windows.'
- );
- }
-
- $this->addPhpIniRecommendation('short_open_tag', false);
-
- $this->addPhpIniRecommendation('magic_quotes_gpc', false, true);
-
- $this->addPhpIniRecommendation('register_globals', false, true);
-
- $this->addPhpIniRecommendation('session.auto_start', false);
-
- $this->addRecommendation(
- class_exists('PDO'),
- 'PDO should be installed',
- 'Install PDO (mandatory for Doctrine).'
- );
-
- if (class_exists('PDO')) {
- $drivers = PDO::getAvailableDrivers();
- $this->addRecommendation(
- count($drivers) > 0,
- sprintf('PDO should have some drivers installed (currently available: %s)', count($drivers) ? implode(', ', $drivers) : 'none'),
- 'Install PDO drivers (mandatory for Doctrine).'
- );
- }
- }
-
- /**
- * Loads realpath_cache_size from php.ini and converts it to int.
- *
- * (e.g. 16k is converted to 16384 int)
- *
- * @return int
- */
- protected function getRealpathCacheSize()
- {
- $size = ini_get('realpath_cache_size');
- $size = trim($size);
- $unit = strtolower(substr($size, -1, 1));
- switch ($unit) {
- case 'g':
- return $size * 1024 * 1024 * 1024;
- case 'm':
- return $size * 1024 * 1024;
- case 'k':
- return $size * 1024;
- default:
- return (int) $size;
- }
- }
-}
diff --git a/symfony/notejam/app/autoload.php b/symfony/notejam/app/autoload.php
deleted file mode 100644
index 70526bb5e..000000000
--- a/symfony/notejam/app/autoload.php
+++ /dev/null
@@ -1,13 +0,0 @@
-getPhpIniConfigPath();
-
-echo_title('Symfony2 Requirements Checker');
-
-echo '> PHP is using the following php.ini file:'.PHP_EOL;
-if ($iniPath) {
- echo_style('green', ' '.$iniPath);
-} else {
- echo_style('warning', ' WARNING: No configuration file (php.ini) used by PHP!');
-}
-
-echo PHP_EOL.PHP_EOL;
-
-echo '> Checking Symfony requirements:'.PHP_EOL.' ';
-
-$messages = array();
-foreach ($symfonyRequirements->getRequirements() as $req) {
- /** @var $req Requirement */
- if ($helpText = get_error_message($req, $lineSize)) {
- echo_style('red', 'E');
- $messages['error'][] = $helpText;
- } else {
- echo_style('green', '.');
- }
-}
-
-$checkPassed = empty($messages['error']);
-
-foreach ($symfonyRequirements->getRecommendations() as $req) {
- if ($helpText = get_error_message($req, $lineSize)) {
- echo_style('yellow', 'W');
- $messages['warning'][] = $helpText;
- } else {
- echo_style('green', '.');
- }
-}
-
-if ($checkPassed) {
- echo_block('success', 'OK', 'Your system is ready to run Symfony2 projects');
-} else {
- echo_block('error', 'ERROR', 'Your system is not ready to run Symfony2 projects');
-
- echo_title('Fix the following mandatory requirements', 'red');
-
- foreach ($messages['error'] as $helpText) {
- echo ' * '.$helpText.PHP_EOL;
- }
-}
-
-if (!empty($messages['warning'])) {
- echo_title('Optional recommendations to improve your setup', 'yellow');
-
- foreach ($messages['warning'] as $helpText) {
- echo ' * '.$helpText.PHP_EOL;
- }
-}
-
-echo PHP_EOL;
-echo_style('title', 'Note');
-echo ' The command console could use a different php.ini file'.PHP_EOL;
-echo_style('title', '~~~~');
-echo ' than the one used with your web server. To be on the'.PHP_EOL;
-echo ' safe side, please check the requirements from your web'.PHP_EOL;
-echo ' server using the ';
-echo_style('yellow', 'web/config.php');
-echo ' script.'.PHP_EOL;
-echo PHP_EOL;
-
-exit($checkPassed ? 0 : 1);
-
-function get_error_message(Requirement $requirement, $lineSize)
-{
- if ($requirement->isFulfilled()) {
- return;
- }
-
- $errorMessage = wordwrap($requirement->getTestMessage(), $lineSize - 3, PHP_EOL.' ').PHP_EOL;
- $errorMessage .= ' > '.wordwrap($requirement->getHelpText(), $lineSize - 5, PHP_EOL.' > ').PHP_EOL;
-
- return $errorMessage;
-}
-
-function echo_title($title, $style = null)
-{
- $style = $style ?: 'title';
-
- echo PHP_EOL;
- echo_style($style, $title.PHP_EOL);
- echo_style($style, str_repeat('~', strlen($title)).PHP_EOL);
- echo PHP_EOL;
-}
-
-function echo_style($style, $message)
-{
- // ANSI color codes
- $styles = array(
- 'reset' => "\033[0m",
- 'red' => "\033[31m",
- 'green' => "\033[32m",
- 'yellow' => "\033[33m",
- 'error' => "\033[37;41m",
- 'success' => "\033[37;42m",
- 'title' => "\033[34m",
- );
- $supports = has_color_support();
-
- echo($supports ? $styles[$style] : '').$message.($supports ? $styles['reset'] : '');
-}
-
-function echo_block($style, $title, $message)
-{
- $message = ' '.trim($message).' ';
- $width = strlen($message);
-
- echo PHP_EOL.PHP_EOL;
-
- echo_style($style, str_repeat(' ', $width).PHP_EOL);
- echo_style($style, str_pad(' ['.$title.']', $width, ' ', STR_PAD_RIGHT).PHP_EOL);
- echo_style($style, str_pad($message, $width, ' ', STR_PAD_RIGHT).PHP_EOL);
- echo_style($style, str_repeat(' ', $width).PHP_EOL);
-}
-
-function has_color_support()
-{
- static $support;
-
- if (null === $support) {
- if (DIRECTORY_SEPARATOR == '\\') {
- $support = false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI');
- } else {
- $support = function_exists('posix_isatty') && @posix_isatty(STDOUT);
- }
- }
-
- return $support;
-}
diff --git a/symfony/notejam/app/config/config.yml b/symfony/notejam/app/config/config.yml
deleted file mode 100644
index a955faa30..000000000
--- a/symfony/notejam/app/config/config.yml
+++ /dev/null
@@ -1,72 +0,0 @@
-imports:
- - { resource: parameters.yml }
- - { resource: security.yml }
- - { resource: services.yml }
-
-framework:
- #esi: ~
- #translator: { fallback: %locale% }
- secret: %secret%
- router:
- resource: "%kernel.root_dir%/config/routing.yml"
- strict_requirements: ~
- form: ~
- csrf_protection: ~
- validation: { enable_annotations: true }
- templating:
- engines: ['twig']
- #assets_version: SomeVersionScheme
- default_locale: "%locale%"
- trusted_proxies: ~
- session: ~
- fragments: ~
- http_method_override: true
-
-# Twig Configuration
-twig:
- debug: %kernel.debug%
- strict_variables: %kernel.debug%
- form:
- resources:
- - "fields.html.twig"
-
-
-# Assetic Configuration
-assetic:
- debug: %kernel.debug%
- use_controller: false
- bundles: [ ]
- #java: /usr/bin/java
- filters:
- cssrewrite: ~
- #closure:
- # jar: %kernel.root_dir%/Resources/java/compiler.jar
- #yui_css:
- # jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar
-
-# Doctrine Configuration
-doctrine:
- dbal:
- driver: pdo_sqlite
- host: %database_host%
- port: %database_port%
- dbname: %database_name%
- user: %database_user%
- password: %database_password%
- charset: UTF8
- # if using pdo_sqlite as your database driver, add the path in parameters.yml
- # e.g. database_path: %kernel.root_dir%/data/data.db3
- path: "%kernel.root_dir%/../notejam.db"
-
- orm:
- auto_generate_proxy_classes: %kernel.debug%
- auto_mapping: true
-
-# Swiftmailer Configuration
-swiftmailer:
- disable_delivery: true
- transport: %mailer_transport%
- host: %mailer_host%
- username: %mailer_user%
- password: %mailer_password%
- spool: { type: memory }
diff --git a/symfony/notejam/app/config/config_dev.yml b/symfony/notejam/app/config/config_dev.yml
deleted file mode 100644
index 4bb7c8ba8..000000000
--- a/symfony/notejam/app/config/config_dev.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-imports:
- - { resource: config.yml }
-
-framework:
- router:
- resource: "%kernel.root_dir%/config/routing_dev.yml"
- strict_requirements: true
- profiler: { only_exceptions: false }
-
-web_profiler:
- toolbar: true
- intercept_redirects: false
-
-monolog:
- handlers:
- main:
- type: stream
- path: %kernel.logs_dir%/%kernel.environment%.log
- level: debug
- firephp:
- type: firephp
- level: info
- chromephp:
- type: chromephp
- level: info
-
-assetic:
- use_controller: true
-
-#swiftmailer:
-# delivery_address: me@example.com
diff --git a/symfony/notejam/app/config/config_prod.yml b/symfony/notejam/app/config/config_prod.yml
deleted file mode 100644
index e125e7525..000000000
--- a/symfony/notejam/app/config/config_prod.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-imports:
- - { resource: config.yml }
-
-#framework:
-# validation:
-# cache: apc
-
-#doctrine:
-# orm:
-# metadata_cache_driver: apc
-# result_cache_driver: apc
-# query_cache_driver: apc
-
-monolog:
- handlers:
- main:
- type: fingers_crossed
- action_level: error
- handler: nested
- nested:
- type: stream
- path: %kernel.logs_dir%/%kernel.environment%.log
- level: debug
diff --git a/symfony/notejam/app/config/config_test.yml b/symfony/notejam/app/config/config_test.yml
deleted file mode 100644
index 2222b28b4..000000000
--- a/symfony/notejam/app/config/config_test.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-imports:
- - { resource: config_dev.yml }
-
-# Test doctrine Configuration
-#doctrine:
- #dbal:
- #driver: pdo_sqlite
- #path: :memory:
- #memory: true
- #charset: UTF8
-doctrine:
- dbal:
- default_connection: default
- connections:
- default:
- driver: pdo_sqlite
- path: %kernel.cache_dir%/test.db
-
-framework:
- test: ~
- session:
- storage_id: session.storage.mock_file
-
-liip_functional_test: ~
-
-web_profiler:
- toolbar: false
- intercept_redirects: false
-
-swiftmailer:
- disable_delivery: true
-
-liip_functional_test: ~
diff --git a/symfony/notejam/app/config/parameters.yml b/symfony/notejam/app/config/parameters.yml
deleted file mode 100644
index 78a62bb83..000000000
--- a/symfony/notejam/app/config/parameters.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-# This file is auto-generated during the composer install
-parameters:
- database_driver: pdo_sqlite
- database_host: 127.0.0.1
- database_port: null
- database_name: notejam
- database_user: root
- database_password: null
- mailer_transport: smtp
- mailer_host: 127.0.0.1
- mailer_user: null
- mailer_password: null
- locale: en
- secret: notejam-secret-key
diff --git a/symfony/notejam/app/config/parameters.yml.dist b/symfony/notejam/app/config/parameters.yml.dist
deleted file mode 100644
index 8b317c27d..000000000
--- a/symfony/notejam/app/config/parameters.yml.dist
+++ /dev/null
@@ -1,15 +0,0 @@
-parameters:
- database_driver: pdo_mysql
- database_host: 127.0.0.1
- database_port: ~
- database_name: symfony
- database_user: root
- database_password: ~
-
- mailer_transport: smtp
- mailer_host: 127.0.0.1
- mailer_user: ~
- mailer_password: ~
-
- locale: en
- secret: ThisTokenIsNotSoSecretChangeIt
diff --git a/symfony/notejam/app/config/routing.yml b/symfony/notejam/app/config/routing.yml
deleted file mode 100644
index b36bc5eac..000000000
--- a/symfony/notejam/app/config/routing.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-app:
- resource: "@AppBundle/Controller"
- type: annotation
- prefix: /
-
-logout:
- path: /signout
diff --git a/symfony/notejam/app/config/routing_dev.yml b/symfony/notejam/app/config/routing_dev.yml
deleted file mode 100644
index ff93a02ba..000000000
--- a/symfony/notejam/app/config/routing_dev.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-_wdt:
- resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml"
- prefix: /_wdt
-
-_profiler:
- resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml"
- prefix: /_profiler
-
-_configurator:
- resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml"
- prefix: /_configurator
-
-_main:
- resource: routing.yml
diff --git a/symfony/notejam/app/config/security.yml b/symfony/notejam/app/config/security.yml
deleted file mode 100644
index 1dd7c4835..000000000
--- a/symfony/notejam/app/config/security.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-security:
- encoders:
- AppBundle\Entity\User:
- algorithm: sha512
- encode-as-base64: true
- iterations: 10
-
- role_hierarchy:
- ROLE_ADMIN: [ROLE_USER]
-
- providers:
- user_db:
- entity: { class: AppBundle\Entity\User, property: email }
-
- firewalls:
- main:
- pattern: ^/*
- provider: user_db
- form_login:
- login_path: /signin
- check_path: /login_check
- username_parameter: form[email]
- password_parameter: form[password]
- default_target_path: /
- remember_me: true
- logout:
- path: /signout
- target: /signin
- remember_me:
- key: MiPassphrase
- lifetime: 1800
- path: /.*
- domain: ~
- security: true
- anonymous: true
- access_control:
- - { path: ^/_wdt, roles: IS_AUTHENTICATED_ANONYMOUSLY}
- - { path: /signin, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- - { path: /signup, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- - { path: /forgot-password, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- - { path: /settings, roles: ROLE_USER }
- - { path: /notes, roles: ROLE_USER }
- - { path: /pads, roles: ROLE_USER }
- - { path: /, roles: ROLE_USER }
diff --git a/symfony/notejam/app/config/services.yml b/symfony/notejam/app/config/services.yml
deleted file mode 100644
index 38e3c965a..000000000
--- a/symfony/notejam/app/config/services.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-services:
- app.repository.note:
- class: AppBundle\Repository\NoteRepository
- factory_service: doctrine.orm.default_entity_manager
- factory_method: "getRepository"
- arguments:
- - "AppBundle:Note"
-
- app.repository.pad:
- class: AppBundle\Repository\PadRepository
- factory_service: doctrine.orm.default_entity_manager
- factory_method: "getRepository"
- arguments:
- - "AppBundle:Pad"
-
diff --git a/symfony/notejam/app/console b/symfony/notejam/app/console
deleted file mode 100755
index fa6a36e24..000000000
--- a/symfony/notejam/app/console
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/env php
-getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev');
-$debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod';
-
-if ($debug) {
- Debug::enable();
-}
-
-$kernel = new AppKernel($env, $debug);
-$application = new Application($kernel);
-$application->run($input);
diff --git a/symfony/notejam/app/logs/.gitkeep b/symfony/notejam/app/logs/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/symfony/notejam/app/phpunit.xml.dist b/symfony/notejam/app/phpunit.xml.dist
deleted file mode 100644
index 68bf78263..000000000
--- a/symfony/notejam/app/phpunit.xml.dist
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
- ../src/*/*Bundle/Tests
- ../src/*/Bundle/*Bundle/Tests
- ../src/*Bundle/Tests
-
-
-
-
-
-
-
- ../src
-
- ../src/*/*Bundle/Resources
- ../src/*/*Bundle/Tests
- ../src/*/Bundle/*Bundle/Resources
- ../src/*/Bundle/*Bundle/Tests
-
-
-
-
-
diff --git a/symfony/notejam/composer.json b/symfony/notejam/composer.json
deleted file mode 100644
index 683906ba8..000000000
--- a/symfony/notejam/composer.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "name": "amatmati/test",
- "license": "proprietary",
- "type": "project",
- "autoload": {
- "psr-4": {
- "": "src/"
- }
- },
- "require": {
- "php": ">=5.3.9",
- "symfony/symfony": "2.7.*",
- "doctrine/orm": "^2.4.8",
- "doctrine/doctrine-bundle": "~1.4",
- "symfony/assetic-bundle": "~2.3",
- "symfony/swiftmailer-bundle": "~2.3",
- "symfony/monolog-bundle": "~2.4",
- "sensio/distribution-bundle": "~4.0",
- "sensio/framework-extra-bundle": "^3.0.2",
- "incenteev/composer-parameter-handler": "~2.0"
- },
- "require-dev": {
- "sensio/generator-bundle": "~2.3",
- "liip/functional-test-bundle": "^1.2",
- "doctrine/doctrine-fixtures-bundle": "^2.3",
- "phpunit/phpunit": "^4.8"
- },
- "scripts": {
- "post-install-cmd": [
- "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
- "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
- "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
- "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
- "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
- "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
- ],
- "post-update-cmd": [
- "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
- "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
- "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
- "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
- "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
- "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
- ]
- },
- "config": {
- "bin-dir": "bin"
- },
- "extra": {
- "symfony-app-dir": "app",
- "symfony-web-dir": "web",
- "symfony-assets-install": "relative",
- "incenteev-parameters": {
- "file": "app/config/parameters.yml"
- }
- }
-}
diff --git a/symfony/notejam/composer.lock b/symfony/notejam/composer.lock
deleted file mode 100644
index 3eb4bb45c..000000000
--- a/symfony/notejam/composer.lock
+++ /dev/null
@@ -1,2725 +0,0 @@
-{
- "_readme": [
- "This file locks the dependencies of your project to a known state",
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
- "This file is @generated automatically"
- ],
- "hash": "1c8a26c61652b05be7ebe27ad273b573",
- "content-hash": "703ed3d406d2be7106a5b118d604e226",
- "packages": [
- {
- "name": "doctrine/annotations",
- "version": "v1.2.7",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/annotations.git",
- "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535",
- "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535",
- "shasum": ""
- },
- "require": {
- "doctrine/lexer": "1.*",
- "php": ">=5.3.2"
- },
- "require-dev": {
- "doctrine/cache": "1.*",
- "phpunit/phpunit": "4.*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Doctrine\\Common\\Annotations\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "Docblock Annotations Parser",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "annotations",
- "docblock",
- "parser"
- ],
- "time": "2015-08-31 12:32:49"
- },
- {
- "name": "doctrine/cache",
- "version": "v1.5.1",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/cache.git",
- "reference": "2b9cec5a5e722010cbebc91713d4c11eaa064d5e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/cache/zipball/2b9cec5a5e722010cbebc91713d4c11eaa064d5e",
- "reference": "2b9cec5a5e722010cbebc91713d4c11eaa064d5e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.2"
- },
- "conflict": {
- "doctrine/common": ">2.2,<2.4"
- },
- "require-dev": {
- "phpunit/phpunit": ">=3.7",
- "predis/predis": "~1.0",
- "satooshi/php-coveralls": "~0.6"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.5.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "Caching library offering an object-oriented API for many cache backends",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "cache",
- "caching"
- ],
- "time": "2015-11-02 18:35:48"
- },
- {
- "name": "doctrine/collections",
- "version": "v1.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/collections.git",
- "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/collections/zipball/6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
- "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Doctrine\\Common\\Collections\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "Collections Abstraction library",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "array",
- "collections",
- "iterator"
- ],
- "time": "2015-04-14 22:21:58"
- },
- {
- "name": "doctrine/common",
- "version": "v2.5.1",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/common.git",
- "reference": "0009b8f0d4a917aabc971fb089eba80e872f83f9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/common/zipball/0009b8f0d4a917aabc971fb089eba80e872f83f9",
- "reference": "0009b8f0d4a917aabc971fb089eba80e872f83f9",
- "shasum": ""
- },
- "require": {
- "doctrine/annotations": "1.*",
- "doctrine/cache": "1.*",
- "doctrine/collections": "1.*",
- "doctrine/inflector": "1.*",
- "doctrine/lexer": "1.*",
- "php": ">=5.3.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~3.7"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.6.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Doctrine\\Common\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "Common Library for Doctrine projects",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "annotations",
- "collections",
- "eventmanager",
- "persistence",
- "spl"
- ],
- "time": "2015-08-31 13:00:22"
- },
- {
- "name": "doctrine/dbal",
- "version": "v2.5.2",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/dbal.git",
- "reference": "01dbcbc5cd0a913d751418e635434a18a2f2a75c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/01dbcbc5cd0a913d751418e635434a18a2f2a75c",
- "reference": "01dbcbc5cd0a913d751418e635434a18a2f2a75c",
- "shasum": ""
- },
- "require": {
- "doctrine/common": ">=2.4,<2.6-dev",
- "php": ">=5.3.2"
- },
- "require-dev": {
- "phpunit/phpunit": "4.*",
- "symfony/console": "2.*"
- },
- "suggest": {
- "symfony/console": "For helpful console commands such as SQL execution and import of files."
- },
- "bin": [
- "bin/doctrine-dbal"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.5.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Doctrine\\DBAL\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- }
- ],
- "description": "Database Abstraction Layer",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "database",
- "dbal",
- "persistence",
- "queryobject"
- ],
- "time": "2015-09-16 16:29:33"
- },
- {
- "name": "doctrine/doctrine-bundle",
- "version": "1.6.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/DoctrineBundle.git",
- "reference": "a5b3ba908ba68f3e14e42762a7b940fde65ed7da"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/a5b3ba908ba68f3e14e42762a7b940fde65ed7da",
- "reference": "a5b3ba908ba68f3e14e42762a7b940fde65ed7da",
- "shasum": ""
- },
- "require": {
- "doctrine/dbal": "~2.3",
- "doctrine/doctrine-cache-bundle": "~1.0",
- "jdorn/sql-formatter": "~1.1",
- "php": ">=5.3.2",
- "symfony/console": "~2.3|~3.0",
- "symfony/doctrine-bridge": "~2.2|~3.0",
- "symfony/framework-bundle": "~2.3|~3.0"
- },
- "require-dev": {
- "doctrine/orm": "~2.3",
- "phpunit/phpunit": "~4",
- "satooshi/php-coveralls": "~0.6.1",
- "symfony/validator": "~2.2|~3.0",
- "symfony/yaml": "~2.2|~3.0",
- "twig/twig": "~1.10"
- },
- "suggest": {
- "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.",
- "symfony/web-profiler-bundle": "to use the data collector"
- },
- "type": "symfony-bundle",
- "extra": {
- "branch-alias": {
- "dev-master": "1.6.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Bundle\\DoctrineBundle\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Doctrine Project",
- "homepage": "http://www.doctrine-project.org/"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony DoctrineBundle",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "database",
- "dbal",
- "orm",
- "persistence"
- ],
- "time": "2015-11-04 21:33:02"
- },
- {
- "name": "doctrine/doctrine-cache-bundle",
- "version": "1.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/DoctrineCacheBundle.git",
- "reference": "3233bc78e222d528ca89a6a47d48d6f37888e95e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/3233bc78e222d528ca89a6a47d48d6f37888e95e",
- "reference": "3233bc78e222d528ca89a6a47d48d6f37888e95e",
- "shasum": ""
- },
- "require": {
- "doctrine/cache": "^1.4.2",
- "doctrine/inflector": "~1.0",
- "php": ">=5.3.2",
- "symfony/doctrine-bridge": "~2.2|~3.0",
- "symfony/security-acl": "~2.3|~3.0"
- },
- "require-dev": {
- "instaclick/coding-standard": "~1.1",
- "instaclick/object-calisthenics-sniffs": "dev-master",
- "instaclick/symfony2-coding-standard": "dev-remaster",
- "phpunit/phpunit": "~4",
- "satooshi/php-coveralls": "~0.6.1",
- "squizlabs/php_codesniffer": "~1.5",
- "symfony/console": "~2.2|~3.0",
- "symfony/finder": "~2.2|~3.0",
- "symfony/framework-bundle": "~2.2|~3.0",
- "symfony/phpunit-bridge": "~2.7|~3.0",
- "symfony/validator": "~2.2|~3.0",
- "symfony/yaml": "~2.2|~3.0"
- },
- "type": "symfony-bundle",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Bundle\\DoctrineCacheBundle\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Fabio B. Silva",
- "email": "fabio.bat.silva@gmail.com"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@hotmail.com"
- },
- {
- "name": "Doctrine Project",
- "homepage": "http://www.doctrine-project.org/"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony Bundle for Doctrine Cache",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "cache",
- "caching"
- ],
- "time": "2015-11-05 13:48:27"
- },
- {
- "name": "doctrine/inflector",
- "version": "v1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/inflector.git",
- "reference": "90b2128806bfde671b6952ab8bea493942c1fdae"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae",
- "reference": "90b2128806bfde671b6952ab8bea493942c1fdae",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.2"
- },
- "require-dev": {
- "phpunit/phpunit": "4.*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Doctrine\\Common\\Inflector\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "Common String Manipulations with regard to casing and singular/plural rules.",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "inflection",
- "pluralize",
- "singularize",
- "string"
- ],
- "time": "2015-11-06 14:35:42"
- },
- {
- "name": "doctrine/instantiator",
- "version": "1.0.5",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/instantiator.git",
- "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
- "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3,<8.0-DEV"
- },
- "require-dev": {
- "athletic/athletic": "~0.1.8",
- "ext-pdo": "*",
- "ext-phar": "*",
- "phpunit/phpunit": "~4.0",
- "squizlabs/php_codesniffer": "~2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com",
- "homepage": "http://ocramius.github.com/"
- }
- ],
- "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
- "homepage": "https://github.com/doctrine/instantiator",
- "keywords": [
- "constructor",
- "instantiate"
- ],
- "time": "2015-06-14 21:17:01"
- },
- {
- "name": "doctrine/lexer",
- "version": "v1.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/lexer.git",
- "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c",
- "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Doctrine\\Common\\Lexer\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "lexer",
- "parser"
- ],
- "time": "2014-09-09 13:34:57"
- },
- {
- "name": "doctrine/orm",
- "version": "v2.5.1",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/doctrine2.git",
- "reference": "e6a83bedbe67579cb0bfb688e982e617943a2945"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/e6a83bedbe67579cb0bfb688e982e617943a2945",
- "reference": "e6a83bedbe67579cb0bfb688e982e617943a2945",
- "shasum": ""
- },
- "require": {
- "doctrine/cache": "~1.4",
- "doctrine/collections": "~1.2",
- "doctrine/common": ">=2.5-dev,<2.6-dev",
- "doctrine/dbal": ">=2.5-dev,<2.6-dev",
- "doctrine/instantiator": "~1.0.1",
- "ext-pdo": "*",
- "php": ">=5.4",
- "symfony/console": "~2.5"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0",
- "satooshi/php-coveralls": "dev-master",
- "symfony/yaml": "~2.1"
- },
- "suggest": {
- "symfony/yaml": "If you want to use YAML Metadata Mapping Driver"
- },
- "bin": [
- "bin/doctrine",
- "bin/doctrine.php"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.6.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Doctrine\\ORM\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- }
- ],
- "description": "Object-Relational-Mapper for PHP",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "database",
- "orm"
- ],
- "time": "2015-08-31 12:59:39"
- },
- {
- "name": "incenteev/composer-parameter-handler",
- "version": "v2.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/Incenteev/ParameterHandler.git",
- "reference": "d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc",
- "reference": "d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "symfony/yaml": "~2.3|~3.0"
- },
- "require-dev": {
- "composer/composer": "1.0.*@dev",
- "phpspec/prophecy-phpunit": "~1.0",
- "symfony/filesystem": "~2.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Incenteev\\ParameterHandler\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Christophe Coevoet",
- "email": "stof@notk.org"
- }
- ],
- "description": "Composer script handling your ignored parameter file",
- "homepage": "https://github.com/Incenteev/ParameterHandler",
- "keywords": [
- "parameters management"
- ],
- "time": "2015-11-10 17:04:01"
- },
- {
- "name": "jdorn/sql-formatter",
- "version": "v1.2.17",
- "source": {
- "type": "git",
- "url": "https://github.com/jdorn/sql-formatter.git",
- "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc",
- "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc",
- "shasum": ""
- },
- "require": {
- "php": ">=5.2.4"
- },
- "require-dev": {
- "phpunit/phpunit": "3.7.*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "lib"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jeremy Dorn",
- "email": "jeremy@jeremydorn.com",
- "homepage": "http://jeremydorn.com/"
- }
- ],
- "description": "a PHP SQL highlighting library",
- "homepage": "https://github.com/jdorn/sql-formatter/",
- "keywords": [
- "highlight",
- "sql"
- ],
- "time": "2014-01-12 16:20:24"
- },
- {
- "name": "kriswallsmith/assetic",
- "version": "v1.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/kriswallsmith/assetic.git",
- "reference": "cb92b179dddfb8a3f341d53bd27e088f24d9c2e5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/cb92b179dddfb8a3f341d53bd27e088f24d9c2e5",
- "reference": "cb92b179dddfb8a3f341d53bd27e088f24d9c2e5",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.1",
- "symfony/process": "~2.1"
- },
- "conflict": {
- "twig/twig": "<1.12"
- },
- "require-dev": {
- "cssmin/cssmin": "*",
- "joliclic/javascript-packer": "*",
- "kamicane/packager": "*",
- "leafo/lessphp": "^0.3.7",
- "leafo/scssphp": "*@dev",
- "leafo/scssphp-compass": "*@dev",
- "mrclay/minify": "*",
- "patchwork/jsqueeze": "~1.0|~2.0",
- "phpunit/phpunit": "~4.8",
- "psr/log": "~1.0",
- "ptachoire/cssembed": "*",
- "symfony/phpunit-bridge": "~2.7",
- "twig/twig": "~1.8|~2.0"
- },
- "suggest": {
- "leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler",
- "leafo/scssphp": "Assetic provides the integration with the scssphp SCSS compiler",
- "leafo/scssphp-compass": "Assetic provides the integration with the SCSS compass plugin",
- "patchwork/jsqueeze": "Assetic provides the integration with the JSqueeze JavaScript compressor",
- "ptachoire/cssembed": "Assetic provides the integration with phpcssembed to embed data uris",
- "twig/twig": "Assetic provides the integration with the Twig templating engine"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Assetic": "src/"
- },
- "files": [
- "src/functions.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Kris Wallsmith",
- "email": "kris.wallsmith@gmail.com",
- "homepage": "http://kriswallsmith.net/"
- }
- ],
- "description": "Asset Management for PHP",
- "homepage": "https://github.com/kriswallsmith/assetic",
- "keywords": [
- "assets",
- "compression",
- "minification"
- ],
- "time": "2015-10-15 01:33:42"
- },
- {
- "name": "monolog/monolog",
- "version": "1.17.2",
- "source": {
- "type": "git",
- "url": "https://github.com/Seldaek/monolog.git",
- "reference": "bee7f0dc9c3e0b69a6039697533dca1e845c8c24"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bee7f0dc9c3e0b69a6039697533dca1e845c8c24",
- "reference": "bee7f0dc9c3e0b69a6039697533dca1e845c8c24",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0",
- "psr/log": "~1.0"
- },
- "provide": {
- "psr/log-implementation": "1.0.0"
- },
- "require-dev": {
- "aws/aws-sdk-php": "^2.4.9",
- "doctrine/couchdb": "~1.0@dev",
- "graylog2/gelf-php": "~1.0",
- "jakub-onderka/php-parallel-lint": "0.9",
- "php-console/php-console": "^3.1.3",
- "phpunit/phpunit": "~4.5",
- "phpunit/phpunit-mock-objects": "2.3.0",
- "raven/raven": "^0.13",
- "ruflin/elastica": ">=0.90 <3.0",
- "swiftmailer/swiftmailer": "~5.3",
- "videlalvaro/php-amqplib": "~2.4"
- },
- "suggest": {
- "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
- "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
- "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
- "ext-mongo": "Allow sending log messages to a MongoDB server",
- "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
- "php-console/php-console": "Allow sending log messages to Google Chrome",
- "raven/raven": "Allow sending log messages to a Sentry server",
- "rollbar/rollbar": "Allow sending log messages to Rollbar",
- "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
- "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.16.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Monolog\\": "src/Monolog"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
- }
- ],
- "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
- "homepage": "http://github.com/Seldaek/monolog",
- "keywords": [
- "log",
- "logging",
- "psr-3"
- ],
- "time": "2015-10-14 12:51:02"
- },
- {
- "name": "psr/log",
- "version": "1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/log.git",
- "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
- "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
- "shasum": ""
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "Psr\\Log\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for logging libraries",
- "keywords": [
- "log",
- "psr",
- "psr-3"
- ],
- "time": "2012-12-21 11:40:51"
- },
- {
- "name": "sensio/distribution-bundle",
- "version": "v4.0.3",
- "target-dir": "Sensio/Bundle/DistributionBundle",
- "source": {
- "type": "git",
- "url": "https://github.com/sensiolabs/SensioDistributionBundle.git",
- "reference": "2d061c01e708c83ede4720e2551d9449bf606c0a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/2d061c01e708c83ede4720e2551d9449bf606c0a",
- "reference": "2d061c01e708c83ede4720e2551d9449bf606c0a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9",
- "sensiolabs/security-checker": "~3.0",
- "symfony/class-loader": "~2.2",
- "symfony/framework-bundle": "~2.3",
- "symfony/process": "~2.2"
- },
- "require-dev": {
- "symfony/form": "~2.2",
- "symfony/validator": "~2.2",
- "symfony/yaml": "~2.2"
- },
- "suggest": {
- "symfony/form": "If you want to use the configurator",
- "symfony/validator": "If you want to use the configurator",
- "symfony/yaml": "If you want to use the configurator"
- },
- "type": "symfony-bundle",
- "extra": {
- "branch-alias": {
- "dev-master": "4.0.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Sensio\\Bundle\\DistributionBundle": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Base bundle for Symfony Distributions",
- "keywords": [
- "configuration",
- "distribution"
- ],
- "time": "2015-10-27 18:48:08"
- },
- {
- "name": "sensio/framework-extra-bundle",
- "version": "v3.0.11",
- "source": {
- "type": "git",
- "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git",
- "reference": "a79e205737b58d557c05caef6dfa8f94d8084bca"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/a79e205737b58d557c05caef6dfa8f94d8084bca",
- "reference": "a79e205737b58d557c05caef6dfa8f94d8084bca",
- "shasum": ""
- },
- "require": {
- "doctrine/common": "~2.2",
- "symfony/framework-bundle": "~2.3|~3.0"
- },
- "require-dev": {
- "symfony/expression-language": "~2.4|~3.0",
- "symfony/security-bundle": "~2.4|~3.0"
- },
- "suggest": {
- "symfony/expression-language": "",
- "symfony/psr-http-message-bridge": "To use the PSR-7 converters",
- "symfony/security-bundle": ""
- },
- "type": "symfony-bundle",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Sensio\\Bundle\\FrameworkExtraBundle\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "This bundle provides a way to configure your controllers with annotations",
- "keywords": [
- "annotations",
- "controllers"
- ],
- "time": "2015-10-28 15:47:04"
- },
- {
- "name": "sensiolabs/security-checker",
- "version": "v3.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sensiolabs/security-checker.git",
- "reference": "21696b0daa731064c23cfb694c60a2584a7b6e93"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/21696b0daa731064c23cfb694c60a2584a7b6e93",
- "reference": "21696b0daa731064c23cfb694c60a2584a7b6e93",
- "shasum": ""
- },
- "require": {
- "symfony/console": "~2.0|~3.0"
- },
- "bin": [
- "security-checker"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "SensioLabs\\Security": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien.potencier@gmail.com"
- }
- ],
- "description": "A security checker for your composer.lock",
- "time": "2015-11-07 08:07:40"
- },
- {
- "name": "swiftmailer/swiftmailer",
- "version": "v5.4.1",
- "source": {
- "type": "git",
- "url": "https://github.com/swiftmailer/swiftmailer.git",
- "reference": "0697e6aa65c83edf97bb0f23d8763f94e3f11421"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/0697e6aa65c83edf97bb0f23d8763f94e3f11421",
- "reference": "0697e6aa65c83edf97bb0f23d8763f94e3f11421",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "mockery/mockery": "~0.9.1,<0.9.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.4-dev"
- }
- },
- "autoload": {
- "files": [
- "lib/swift_required.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Chris Corbyn"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Swiftmailer, free feature-rich PHP mailer",
- "homepage": "http://swiftmailer.org",
- "keywords": [
- "email",
- "mail",
- "mailer"
- ],
- "time": "2015-06-06 14:19:39"
- },
- {
- "name": "symfony/assetic-bundle",
- "version": "v2.7.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/assetic-bundle.git",
- "reference": "3ae5c8ca3079b6e0033cc9fbfb6500e2bc964da5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/assetic-bundle/zipball/3ae5c8ca3079b6e0033cc9fbfb6500e2bc964da5",
- "reference": "3ae5c8ca3079b6e0033cc9fbfb6500e2bc964da5",
- "shasum": ""
- },
- "require": {
- "kriswallsmith/assetic": "~1.3",
- "php": ">=5.3.0",
- "symfony/console": "~2.3",
- "symfony/dependency-injection": "~2.3",
- "symfony/framework-bundle": "~2.3",
- "symfony/yaml": "~2.3"
- },
- "conflict": {
- "kriswallsmith/spork": "<=0.2",
- "twig/twig": "<1.20"
- },
- "require-dev": {
- "kriswallsmith/spork": "~0.3",
- "patchwork/jsqueeze": "~1.0",
- "symfony/class-loader": "~2.3",
- "symfony/css-selector": "~2.3",
- "symfony/dom-crawler": "~2.3",
- "symfony/phpunit-bridge": "~2.7",
- "symfony/twig-bundle": "~2.3"
- },
- "suggest": {
- "kriswallsmith/spork": "to be able to dump assets in parallel",
- "symfony/twig-bundle": "to use the Twig integration"
- },
- "type": "symfony-bundle",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Bundle\\AsseticBundle\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Kris Wallsmith",
- "email": "kris.wallsmith@gmail.com",
- "homepage": "http://kriswallsmith.net/"
- }
- ],
- "description": "Integrates Assetic into Symfony2",
- "homepage": "https://github.com/symfony/AsseticBundle",
- "keywords": [
- "assets",
- "compression",
- "minification"
- ],
- "time": "2015-09-01 00:05:29"
- },
- {
- "name": "symfony/monolog-bundle",
- "version": "2.8.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/monolog-bundle.git",
- "reference": "7117b9a145722e3c5768db4585f6ad0643ed5c4a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/7117b9a145722e3c5768db4585f6ad0643ed5c4a",
- "reference": "7117b9a145722e3c5768db4585f6ad0643ed5c4a",
- "shasum": ""
- },
- "require": {
- "monolog/monolog": "~1.8",
- "php": ">=5.3.2",
- "symfony/config": "~2.3|3.*",
- "symfony/dependency-injection": "~2.3|3.*",
- "symfony/http-kernel": "~2.3|3.*",
- "symfony/monolog-bridge": "~2.3|3.*"
- },
- "require-dev": {
- "symfony/console": "~2.3|3.*",
- "symfony/yaml": "~2.3"
- },
- "type": "symfony-bundle",
- "extra": {
- "branch-alias": {
- "dev-master": "2.8.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Bundle\\MonologBundle\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony MonologBundle",
- "homepage": "http://symfony.com",
- "keywords": [
- "log",
- "logging"
- ],
- "time": "2015-10-02 11:51:59"
- },
- {
- "name": "symfony/swiftmailer-bundle",
- "version": "v2.3.8",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/swiftmailer-bundle.git",
- "reference": "970b13d01871207e81d17b17ddda025e7e21e797"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/970b13d01871207e81d17b17ddda025e7e21e797",
- "reference": "970b13d01871207e81d17b17ddda025e7e21e797",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.2",
- "swiftmailer/swiftmailer": ">=4.2.0,~5.0",
- "symfony/swiftmailer-bridge": "~2.1"
- },
- "require-dev": {
- "symfony/config": "~2.1",
- "symfony/dependency-injection": "~2.1",
- "symfony/http-kernel": "~2.1",
- "symfony/yaml": "~2.1"
- },
- "suggest": {
- "psr/log": "Allows logging"
- },
- "type": "symfony-bundle",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Bundle\\SwiftmailerBundle\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony SwiftmailerBundle",
- "homepage": "http://symfony.com",
- "time": "2014-12-01 17:44:50"
- },
- {
- "name": "symfony/symfony",
- "version": "v2.7.6",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/symfony.git",
- "reference": "66b2e9662c44d478b69e48278aa54079a006eb42"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/symfony/zipball/66b2e9662c44d478b69e48278aa54079a006eb42",
- "reference": "66b2e9662c44d478b69e48278aa54079a006eb42",
- "shasum": ""
- },
- "require": {
- "doctrine/common": "~2.4",
- "php": ">=5.3.9",
- "psr/log": "~1.0",
- "twig/twig": "~1.20|~2.0"
- },
- "replace": {
- "symfony/asset": "self.version",
- "symfony/browser-kit": "self.version",
- "symfony/class-loader": "self.version",
- "symfony/config": "self.version",
- "symfony/console": "self.version",
- "symfony/css-selector": "self.version",
- "symfony/debug": "self.version",
- "symfony/debug-bundle": "self.version",
- "symfony/dependency-injection": "self.version",
- "symfony/doctrine-bridge": "self.version",
- "symfony/dom-crawler": "self.version",
- "symfony/event-dispatcher": "self.version",
- "symfony/expression-language": "self.version",
- "symfony/filesystem": "self.version",
- "symfony/finder": "self.version",
- "symfony/form": "self.version",
- "symfony/framework-bundle": "self.version",
- "symfony/http-foundation": "self.version",
- "symfony/http-kernel": "self.version",
- "symfony/intl": "self.version",
- "symfony/locale": "self.version",
- "symfony/monolog-bridge": "self.version",
- "symfony/options-resolver": "self.version",
- "symfony/process": "self.version",
- "symfony/property-access": "self.version",
- "symfony/proxy-manager-bridge": "self.version",
- "symfony/routing": "self.version",
- "symfony/security": "self.version",
- "symfony/security-acl": "self.version",
- "symfony/security-bundle": "self.version",
- "symfony/security-core": "self.version",
- "symfony/security-csrf": "self.version",
- "symfony/security-http": "self.version",
- "symfony/serializer": "self.version",
- "symfony/stopwatch": "self.version",
- "symfony/swiftmailer-bridge": "self.version",
- "symfony/templating": "self.version",
- "symfony/translation": "self.version",
- "symfony/twig-bridge": "self.version",
- "symfony/twig-bundle": "self.version",
- "symfony/validator": "self.version",
- "symfony/var-dumper": "self.version",
- "symfony/web-profiler-bundle": "self.version",
- "symfony/yaml": "self.version"
- },
- "require-dev": {
- "doctrine/data-fixtures": "1.0.*",
- "doctrine/dbal": "~2.4",
- "doctrine/doctrine-bundle": "~1.2",
- "doctrine/orm": "~2.4,>=2.4.5",
- "egulias/email-validator": "~1.2",
- "ircmaxell/password-compat": "~1.0",
- "monolog/monolog": "~1.11",
- "ocramius/proxy-manager": "~0.4|~1.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/",
- "Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/",
- "Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/",
- "Symfony\\Bridge\\Swiftmailer\\": "src/Symfony/Bridge/Swiftmailer/",
- "Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/",
- "Symfony\\Bundle\\": "src/Symfony/Bundle/",
- "Symfony\\Component\\": "src/Symfony/Component/"
- },
- "classmap": [
- "src/Symfony/Component/HttpFoundation/Resources/stubs",
- "src/Symfony/Component/Intl/Resources/stubs"
- ],
- "files": [
- "src/Symfony/Component/Intl/Resources/stubs/functions.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "The Symfony PHP framework",
- "homepage": "https://symfony.com",
- "keywords": [
- "framework"
- ],
- "time": "2015-10-27 19:07:24"
- },
- {
- "name": "twig/twig",
- "version": "v1.23.1",
- "source": {
- "type": "git",
- "url": "https://github.com/twigphp/Twig.git",
- "reference": "d9b6333ae8dd2c8e3fd256e127548def0bc614c6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/d9b6333ae8dd2c8e3fd256e127548def0bc614c6",
- "reference": "d9b6333ae8dd2c8e3fd256e127548def0bc614c6",
- "shasum": ""
- },
- "require": {
- "php": ">=5.2.7"
- },
- "require-dev": {
- "symfony/debug": "~2.7",
- "symfony/phpunit-bridge": "~2.7"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.23-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Twig_": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com",
- "homepage": "http://fabien.potencier.org",
- "role": "Lead Developer"
- },
- {
- "name": "Armin Ronacher",
- "email": "armin.ronacher@active-4.com",
- "role": "Project Founder"
- },
- {
- "name": "Twig Team",
- "homepage": "http://twig.sensiolabs.org/contributors",
- "role": "Contributors"
- }
- ],
- "description": "Twig, the flexible, fast, and secure template language for PHP",
- "homepage": "http://twig.sensiolabs.org",
- "keywords": [
- "templating"
- ],
- "time": "2015-11-05 12:49:06"
- }
- ],
- "packages-dev": [
- {
- "name": "doctrine/data-fixtures",
- "version": "v1.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/data-fixtures.git",
- "reference": "bd44f6b6e40247b6530bc8abe802e4e4d914976a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/bd44f6b6e40247b6530bc8abe802e4e4d914976a",
- "reference": "bd44f6b6e40247b6530bc8abe802e4e4d914976a",
- "shasum": ""
- },
- "require": {
- "doctrine/common": "~2.2",
- "php": ">=5.3.2"
- },
- "conflict": {
- "doctrine/orm": "< 2.4"
- },
- "require-dev": {
- "doctrine/orm": "~2.4"
- },
- "suggest": {
- "doctrine/mongodb-odm": "For loading MongoDB ODM fixtures",
- "doctrine/orm": "For loading ORM fixtures",
- "doctrine/phpcr-odm": "For loading PHPCR ODM fixtures"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Doctrine\\Common\\DataFixtures": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- }
- ],
- "description": "Data Fixtures for all Doctrine Object Managers",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "database"
- ],
- "time": "2015-03-30 12:14:13"
- },
- {
- "name": "doctrine/doctrine-fixtures-bundle",
- "version": "2.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/DoctrineFixturesBundle.git",
- "reference": "0f1a2f91b349e10f5c343f75ab71d23aace5b029"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/0f1a2f91b349e10f5c343f75ab71d23aace5b029",
- "reference": "0f1a2f91b349e10f5c343f75ab71d23aace5b029",
- "shasum": ""
- },
- "require": {
- "doctrine/data-fixtures": "~1.0",
- "doctrine/doctrine-bundle": "~1.0",
- "php": ">=5.3.2",
- "symfony/doctrine-bridge": "~2.3|~3.0"
- },
- "type": "symfony-bundle",
- "extra": {
- "branch-alias": {
- "dev-master": "2.2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Bundle\\FixturesBundle\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Doctrine Project",
- "homepage": "http://www.doctrine-project.org"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony DoctrineFixturesBundle",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "Fixture",
- "persistence"
- ],
- "time": "2015-11-04 21:23:23"
- },
- {
- "name": "liip/functional-test-bundle",
- "version": "1.2.2",
- "source": {
- "type": "git",
- "url": "https://github.com/liip/LiipFunctionalTestBundle.git",
- "reference": "57ef24d843d8e3133b201f7bfe722dcea115a546"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/liip/LiipFunctionalTestBundle/zipball/57ef24d843d8e3133b201f7bfe722dcea115a546",
- "reference": "57ef24d843d8e3133b201f7bfe722dcea115a546",
- "shasum": ""
- },
- "require": {
- "doctrine/common": "2.*",
- "php": ">=5.3.2",
- "symfony/browser-kit": "~2.0",
- "symfony/framework-bundle": "~2.0"
- },
- "suggest": {
- "doctrine/dbal": "Required when using the fixture loading functionality with an ORM and SQLite",
- "doctrine/doctrine-fixtures-bundle": "Required when using the fixture loading functionality",
- "doctrine/orm": "Required when using the fixture loading functionality with an ORM and SQLite",
- "nelmio/alice": "Required when using loadFixtureFiles functionality"
- },
- "type": "symfony-bundle",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Liip\\FunctionalTestBundle\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Liip AG",
- "homepage": "http://www.liip.ch/"
- },
- {
- "name": "Community contributions",
- "homepage": "https://github.com/liip/LiipFunctionalTestBundle/contributors"
- }
- ],
- "description": "This bundles provides additional functional test-cases for Symfony2 applications",
- "keywords": [
- "Symfony2"
- ],
- "time": "2015-05-09 08:22:16"
- },
- {
- "name": "phpdocumentor/reflection-docblock",
- "version": "2.0.4",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8",
- "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "suggest": {
- "dflydev/markdown": "~1.0",
- "erusev/parsedown": "~1.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "phpDocumentor": [
- "src/"
- ]
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "mike.vanriel@naenius.com"
- }
- ],
- "time": "2015-02-03 12:10:50"
- },
- {
- "name": "phpspec/prophecy",
- "version": "v1.5.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpspec/prophecy.git",
- "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4745ded9307786b730d7a60df5cb5a6c43cf95f7",
- "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.0.2",
- "phpdocumentor/reflection-docblock": "~2.0",
- "sebastian/comparator": "~1.1"
- },
- "require-dev": {
- "phpspec/phpspec": "~2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Prophecy\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Konstantin Kudryashov",
- "email": "ever.zet@gmail.com",
- "homepage": "http://everzet.com"
- },
- {
- "name": "Marcello Duarte",
- "email": "marcello.duarte@gmail.com"
- }
- ],
- "description": "Highly opinionated mocking framework for PHP 5.3+",
- "homepage": "https://github.com/phpspec/prophecy",
- "keywords": [
- "Double",
- "Dummy",
- "fake",
- "mock",
- "spy",
- "stub"
- ],
- "time": "2015-08-13 10:07:40"
- },
- {
- "name": "phpunit/php-code-coverage",
- "version": "2.2.4",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "phpunit/php-file-iterator": "~1.3",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-token-stream": "~1.3",
- "sebastian/environment": "^1.3.2",
- "sebastian/version": "~1.0"
- },
- "require-dev": {
- "ext-xdebug": ">=2.1.4",
- "phpunit/phpunit": "~4"
- },
- "suggest": {
- "ext-dom": "*",
- "ext-xdebug": ">=2.2.1",
- "ext-xmlwriter": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.2.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
- "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
- "keywords": [
- "coverage",
- "testing",
- "xunit"
- ],
- "time": "2015-10-06 15:47:00"
- },
- {
- "name": "phpunit/php-file-iterator",
- "version": "1.4.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
- "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "FilterIterator implementation that filters files based on a list of suffixes.",
- "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
- "keywords": [
- "filesystem",
- "iterator"
- ],
- "time": "2015-06-21 13:08:43"
- },
- {
- "name": "phpunit/php-text-template",
- "version": "1.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Simple template engine.",
- "homepage": "https://github.com/sebastianbergmann/php-text-template/",
- "keywords": [
- "template"
- ],
- "time": "2015-06-21 13:50:34"
- },
- {
- "name": "phpunit/php-timer",
- "version": "1.0.7",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
- "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Utility class for timing",
- "homepage": "https://github.com/sebastianbergmann/php-timer/",
- "keywords": [
- "timer"
- ],
- "time": "2015-06-21 08:01:12"
- },
- {
- "name": "phpunit/php-token-stream",
- "version": "1.4.8",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-token-stream.git",
- "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
- "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
- "shasum": ""
- },
- "require": {
- "ext-tokenizer": "*",
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Wrapper around PHP's tokenizer extension.",
- "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
- "keywords": [
- "tokenizer"
- ],
- "time": "2015-09-15 10:49:45"
- },
- {
- "name": "phpunit/phpunit",
- "version": "4.8.21",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "ea76b17bced0500a28098626b84eda12dbcf119c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ea76b17bced0500a28098626b84eda12dbcf119c",
- "reference": "ea76b17bced0500a28098626b84eda12dbcf119c",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-json": "*",
- "ext-pcre": "*",
- "ext-reflection": "*",
- "ext-spl": "*",
- "php": ">=5.3.3",
- "phpspec/prophecy": "^1.3.1",
- "phpunit/php-code-coverage": "~2.1",
- "phpunit/php-file-iterator": "~1.4",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-timer": ">=1.0.6",
- "phpunit/phpunit-mock-objects": "~2.3",
- "sebastian/comparator": "~1.1",
- "sebastian/diff": "~1.2",
- "sebastian/environment": "~1.3",
- "sebastian/exporter": "~1.2",
- "sebastian/global-state": "~1.0",
- "sebastian/version": "~1.0",
- "symfony/yaml": "~2.1|~3.0"
- },
- "suggest": {
- "phpunit/php-invoker": "~1.1"
- },
- "bin": [
- "phpunit"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.8.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "The PHP Unit Testing framework.",
- "homepage": "https://phpunit.de/",
- "keywords": [
- "phpunit",
- "testing",
- "xunit"
- ],
- "time": "2015-12-12 07:45:58"
- },
- {
- "name": "phpunit/phpunit-mock-objects",
- "version": "2.3.8",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
- "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
- "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.0.2",
- "php": ">=5.3.3",
- "phpunit/php-text-template": "~1.2",
- "sebastian/exporter": "~1.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "suggest": {
- "ext-soap": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Mock Object library for PHPUnit",
- "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
- "keywords": [
- "mock",
- "xunit"
- ],
- "time": "2015-10-02 06:51:40"
- },
- {
- "name": "sebastian/comparator",
- "version": "1.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "937efb279bd37a375bcadf584dec0726f84dbf22"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22",
- "reference": "937efb279bd37a375bcadf584dec0726f84dbf22",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "sebastian/diff": "~1.2",
- "sebastian/exporter": "~1.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@2bepublished.at"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Provides the functionality to compare PHP values for equality",
- "homepage": "http://www.github.com/sebastianbergmann/comparator",
- "keywords": [
- "comparator",
- "compare",
- "equality"
- ],
- "time": "2015-07-26 15:48:44"
- },
- {
- "name": "sebastian/diff",
- "version": "1.4.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e",
- "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.8"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Kore Nordmann",
- "email": "mail@kore-nordmann.de"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Diff implementation",
- "homepage": "https://github.com/sebastianbergmann/diff",
- "keywords": [
- "diff"
- ],
- "time": "2015-12-08 07:14:41"
- },
- {
- "name": "sebastian/environment",
- "version": "1.3.3",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "6e7133793a8e5a5714a551a8324337374be209df"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6e7133793a8e5a5714a551a8324337374be209df",
- "reference": "6e7133793a8e5a5714a551a8324337374be209df",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Provides functionality to handle HHVM/PHP environments",
- "homepage": "http://www.github.com/sebastianbergmann/environment",
- "keywords": [
- "Xdebug",
- "environment",
- "hhvm"
- ],
- "time": "2015-12-02 08:37:27"
- },
- {
- "name": "sebastian/exporter",
- "version": "1.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "7ae5513327cb536431847bcc0c10edba2701064e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e",
- "reference": "7ae5513327cb536431847bcc0c10edba2701064e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "sebastian/recursion-context": "~1.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@2bepublished.at"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- }
- ],
- "description": "Provides the functionality to export PHP variables for visualization",
- "homepage": "http://www.github.com/sebastianbergmann/exporter",
- "keywords": [
- "export",
- "exporter"
- ],
- "time": "2015-06-21 07:55:53"
- },
- {
- "name": "sebastian/global-state",
- "version": "1.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
- "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.2"
- },
- "suggest": {
- "ext-uopz": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Snapshotting of global state",
- "homepage": "http://www.github.com/sebastianbergmann/global-state",
- "keywords": [
- "global state"
- ],
- "time": "2015-10-12 03:26:01"
- },
- {
- "name": "sebastian/recursion-context",
- "version": "1.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "913401df809e99e4f47b27cdd781f4a258d58791"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/913401df809e99e4f47b27cdd781f4a258d58791",
- "reference": "913401df809e99e4f47b27cdd781f4a258d58791",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- }
- ],
- "description": "Provides functionality to recursively process PHP variables",
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
- "time": "2015-11-11 19:50:13"
- },
- {
- "name": "sebastian/version",
- "version": "1.0.6",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/version.git",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "shasum": ""
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library that helps with managing the version number of Git-hosted PHP projects",
- "homepage": "https://github.com/sebastianbergmann/version",
- "time": "2015-06-21 13:59:46"
- },
- {
- "name": "sensio/generator-bundle",
- "version": "v2.5.3",
- "target-dir": "Sensio/Bundle/GeneratorBundle",
- "source": {
- "type": "git",
- "url": "https://github.com/sensiolabs/SensioGeneratorBundle.git",
- "reference": "e50108c2133ee5c9c484555faed50c17a61221d3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/e50108c2133ee5c9c484555faed50c17a61221d3",
- "reference": "e50108c2133ee5c9c484555faed50c17a61221d3",
- "shasum": ""
- },
- "require": {
- "symfony/console": "~2.5",
- "symfony/framework-bundle": "~2.2"
- },
- "require-dev": {
- "doctrine/orm": "~2.2,>=2.2.3",
- "symfony/doctrine-bridge": "~2.2",
- "twig/twig": "~1.11"
- },
- "type": "symfony-bundle",
- "extra": {
- "branch-alias": {
- "dev-master": "2.5.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Sensio\\Bundle\\GeneratorBundle": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "This bundle generates code for you",
- "time": "2015-03-17 06:36:52"
- }
- ],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": [],
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": {
- "php": ">=5.3.9"
- },
- "platform-dev": []
-}
diff --git a/symfony/notejam/src/.htaccess b/symfony/notejam/src/.htaccess
deleted file mode 100644
index 3418e55a6..000000000
--- a/symfony/notejam/src/.htaccess
+++ /dev/null
@@ -1 +0,0 @@
-deny from all
\ No newline at end of file
diff --git a/symfony/notejam/src/AppBundle/AppBundle.php b/symfony/notejam/src/AppBundle/AppBundle.php
deleted file mode 100644
index 7a9dacbec..000000000
--- a/symfony/notejam/src/AppBundle/AppBundle.php
+++ /dev/null
@@ -1,13 +0,0 @@
-query->get('order', 'name');
- $user = $this->getUser();
- $notes = $this->get('app.repository.note')
- ->findBy(array('user' => $user), $this->buildOrderBy($orderBy));
-
- return $this->render('AppBundle:Note:list.html.twig', array(
- 'notes' => $notes
- ));
- }
-
- /**
- * Returns the order by field
- *
- * @param string $orderBy
- *
- * @return array
- */
- private function buildOrderBy($orderBy = 'name')
- {
- return [
- 'name' => array('name' => 'ASC'),
- '-name' => array('name' => 'DESC'),
- 'updated_at' => array('updated_at' => 'ASC'),
- '-updated_at' => array('updated_at' => 'DESC')
- ][$orderBy];
- }
-
- /**
- * Creates a new note.
- *
- * @Route("/notes/create", name="note_create")
- * @Method({"GET", "POST"})
- *
- * @param Request $request
- *
- * @return Response
- */
- public function createAction(Request $request)
- {
- $user = $this->getUser();
- $padId = $request->query->get('pad');
-
- $em = $this->getDoctrine()->getManager();
-
- $note = new Note();
- if ($padId) {
- $pad = $this->get('app.repository.pad')->find($padId);
- $note->setPad($pad);
- }
-
- $form = $this->createForm(new NoteType($user), $note);
- $form->handleRequest($request);
-
- if ($form->isValid()) {
- $note = $form->getData();
- $note->setUser($user);
-
- $em->persist($note);
- $em->flush();
-
- $this->get('session')->getFlashBag()->add('success', 'Note is successfully created');
-
- return $this->redirect($this->generateUrl('homepage'));
- }
-
- return $this->render('AppBundle:Note:create.html.twig', [
- 'form' => $form->createView()
- ]);
- }
-
- /**
- * Shows a note detail page.
- *
- * @Route("/notes/view/{id}", name="note_view")
- * @Method("GET")
- *
- * @param Note $note
- * @param Request $request
- *
- * @return Response
- */
- public function viewAction(Note $note, Request $request)
- {
- return $this->render('AppBundle:Note:view.html.twig', [
- 'note' => $note
- ]);
- }
-
- /**
- * Edits a note.
- *
- * @Route("/notes/{id}/edit", name="note_edit")
- * @Method({"GET", "POST"})
- *
- * @param Note $note
- * @param Request $request
- *
- * @return Response
- */
- public function editAction(Note $note, Request $request)
- {
- $form = $this->createForm(new NoteType($this->getUser()), $note);
- $form->handleRequest($request);
-
- if ($form->isValid()) {
- $em = $this->getDoctrine()->getEntityManager();
- $em->persist($form->getData());
- $em->flush();
-
- $this->get('session')->getFlashBag()->add(
- 'success',
- 'Note is successfully updated'
- );
-
- return $this->redirect($this->generateUrl('homepage'));
- }
-
- return $this->render('AppBundle:Note:edit.html.twig', [
- 'form' => $form->createView(),
- 'note' => $note
- ]);
- }
-
- /**
- * Deletes a note.
- *
- * @Route("/notes/{id}/delete", name="note_delete")
- * @Method({"GET", "POST"})
- *
- * @param Note $note
- * @param Request $request
- *
- * @return Response
- */
- public function deleteAction(Note $note, Request $request)
- {
- $em = $this->getDoctrine()->getManager();
- $em->remove($note);
- $em->flush();
-
- $this->get('session')->getFlashBag()->add(
- 'success',
- 'Note is successfully deleted'
- );
-
- return $this->redirect($this->generateUrl('homepage'));
- }
-}
diff --git a/symfony/notejam/src/AppBundle/Controller/PadController.php b/symfony/notejam/src/AppBundle/Controller/PadController.php
deleted file mode 100644
index a50c00327..000000000
--- a/symfony/notejam/src/AppBundle/Controller/PadController.php
+++ /dev/null
@@ -1,175 +0,0 @@
-render(
- 'AppBundle:Pad:list.html.twig',
- array('pads' => $this->getUser()->getPads())
- );
- }
-
- /**
- * List all notes for a pad.
- *
- * @Route("/pads/{id}/notes", name="pad_notes")
- * @Method("GET")
- *
- * @return Response
- */
- public function notesAction(Pad $pad, Request $request)
- {
- $orderBy = $request->query->get('order', 'name');
- $notes = $this->get('app.repository.note')->findBy(
- ['pad' => $pad->getId()],
- $this->buildOrderBy($orderBy)
- );
-
- return $this->render('AppBundle:Pad:notes.html.twig', [
- 'notes' => $notes,
- 'pad' => $pad
- ]);
- }
-
- /**
- * Returns the order by field
-
- * @param string $orderBy
- *
- * @return array
- */
- private function buildOrderBy($orderBy = 'name')
- {
- return [
- 'name' => ['name' => 'ASC'],
- '-name' => ['name' => 'DESC'],
- ][$orderBy];
- }
-
- /**
- * Creates a new pad.
- *
- * @Route("/pads/create", name="pad_create")
- * @Method({"GET", "POST"})
- *
- * @param Request $request
- *
- * @return Response
- */
- public function createAction(Request $request)
- {
- $pad = new Pad();
- $pad->setUser($this->getUser());
-
- $form = $this->createForm(new PadType(), $pad);
- $form->handleRequest($request);
-
- if ($form->isValid()) {
-
- $em = $this->getDoctrine()->getManager();
- $em->persist($pad);
- $em->flush();
-
- $this->get('session')->getFlashBag()->add(
- 'success',
- 'Pad is successfully created'
- );
-
- return $this->redirect($this->generateUrl('homepage'));
- }
-
- return $this->render('AppBundle:Pad:create.html.twig', [
- 'form' => $form->createView()
- ]);
- }
-
- /**
- * Edit an existing pad.
- *
- * @Route("/pads/{id}/edit", name="pad_edit")
- * @Method({"GET", "POST"})
- *
- * @param Pad $pad
- * @param Request $request
- *
- * @return Response
- */
- public function editAction(Pad $pad, Request $request)
- {
- $form = $this->createForm(new PadType(), $pad);
- $form->handleRequest($request);
-
- if ($form->isValid()) {
- $em = $this->getDoctrine()->getManager();
- $em->persist($form->getData());
- $em->flush();
-
- $this->get('session')->getFlashBag()->add(
- 'success',
- 'Pad is successfully updated'
- );
-
- return $this->redirect($this->generateUrl('homepage'));
- }
-
- return $this->render('AppBundle:Pad:edit.html.twig', [
- 'form' => $form->createView(), 'pad' => $pad
- ]);
- }
-
- /**
- * Delete a pad.
- *
- * @Route("/pads/{id}/delete", name="pad_delete")
- * @Method({"GET", "POST"})
- *
- * @param Pad $pad
- * @param Request $request
- *
- * @return Response
- */
- public function deleteAction(Pad $pad, Request $request)
- {
- if ($pad->getUser()->getId() !== $this->getUser()->getId()) {
- throw $this->createNotFoundException('Pad not found');
- }
-
- if ($request->isMethod('POST')) {
- $em = $this->getDoctrine()->getManager();
- $em->remove($pad);
- $em->flush();
- $this->get('session')->getFlashBag()->add(
- 'success',
- 'Pad is successfully deleted'
- );
-
- return $this->redirect($this->generateUrl('homepage'));
- }
-
- return $this->render('AppBundle:Pad:delete.html.twig', [
- 'pad' => $pad
- ]);
- }
-}
-
diff --git a/symfony/notejam/src/AppBundle/Controller/UserController.php b/symfony/notejam/src/AppBundle/Controller/UserController.php
deleted file mode 100644
index d267c5d38..000000000
--- a/symfony/notejam/src/AppBundle/Controller/UserController.php
+++ /dev/null
@@ -1,211 +0,0 @@
-render('AppBundle:User:index.html.twig', array('name' => $name));
- }
-
- /**
- * Signup form.
- *
- * @Route("/signup", name="user_signup")
- * @Method({"GET", "POST"})
- *
- * @param Request $request
- *
- * @return Response
- */
- public function signupAction(Request $request)
- {
- $user = new User();
- $form = $this->createForm(new UserType(), $user);
- $form->handleRequest($request);
-
- if ($form->isValid()) {
- $em = $this->get('doctrine.orm.default_entity_manager');
-
- $factory = $this->get('security.encoder_factory');
- $encoder = $factory->getEncoder($user);
- $password = $encoder->encodePassword($user->getPassword(), $user->getSalt());
- $user->setPassword($password);
-
- $em->persist($user);
- $em->flush();
-
- $this->get('session')->getFlashBag()->add(
- 'success',
- 'Account is created. Now you can sign in.'
- );
-
- return $this->redirect($this->generateUrl('user_signin'));
-
- }
-
- return $this->render('AppBundle:User:signup.html.twig', [
- 'form' => $form->createView()
- ]);
- }
-
- /**
- * Sign in form.
- *
- * @Route("/signin", name="user_signin")
- * @Method("GET")
- *
- * @return Response
- */
- public function signinAction(Request $request)
- {
- $session = $request->getSession();
- $form = $this->createFormBuilder(new User())
- ->setAction($this->generateUrl('login_check'))
- ->add('email', 'text')
- ->add('password', 'password')
- ->add('save', 'submit', array('label' => 'Sign in'))
- ->getForm();
-
- if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
- $error = $request->attributes->get(
- SecurityContext::AUTHENTICATION_ERROR
- );
- } else {
- $error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
- }
- if ($error) {
- $this->get('session')->getFlashBag()->add(
- 'error',
- $error->getMessage()
- );
- }
-
- return $this->render('AppBundle:User:signin.html.twig', [
- 'form' => $form->createView()]
- );
- }
-
- /**
- * Forgot password form.
- *
- * @Route("/forgot-password", name="user_forgot_password")
- * @Method({"GET", "POST"})
- *
- * @return Response
- */
- public function forgotPasswordAction(Request $request)
- {
- $form = $this->createFormBuilder()
- ->add('email', 'email')
- ->add('save', 'submit')
- ->getForm();
-
- $form->handleRequest($request);
- if ($form->isValid()) {
- $data = $form->getData();
- $repository = $this->getDoctrine()->getRepository('AppBundle:User');
- $user = $repository->findOneByEmail($data['email']);
- if ($user) {
- // silly way to generate password
- $newPassword = substr(md5(time() . $user->getSalt()), 0, 8);
- $factory = $this->get('security.encoder_factory');
- $encoder = $factory->getEncoder($user);
- $password = $encoder->encodePassword($newPassword, $user->getSalt());
- $user->setPassword($password);
-
- $em = $this->getDoctrine()->getManager();
- $em->persist($user);
- $em->flush();
-
- $message = \Swift_Message::newInstance()
- ->setSubject('Notejam password')
- ->setFrom('noreply@notejamapp.com')
- ->setTo($user->getEmail())
- ->setBody("Your new password is {$newPassword}");
- $this->get('mailer')->send($message);
-
- $this->get('session')->getFlashBag()->add(
- 'success',
- 'New password sent to your inbox'
- );
- } else {
- $this->get('session')->getFlashBag()->add(
- 'error',
- "User with given email doesn't exist"
- );
- }
- }
-
- return $this->render(
- 'AppBundle:User:forgot-password.html.twig',
- array('form' => $form->createView())
- );
- }
-
- /**
- * User settings form.
- *
- * @Route("/settings", name="user_settings")
- * @Method({"GET", "POST"})
- *
- * @return Response
- */
- public function settingsAction(Request $request)
- {
- $form = $this->createForm(new ChangePasswordType());
- $form->handleRequest($request);
-
- if ($form->isValid()) {
- $passwordData = $form->getData();
- $user = $this->getUser();
- $factory = $this->get('security.encoder_factory');
- $encoder = $factory->getEncoder($user);
- $password = $encoder->encodePassword($passwordData['new_password'], $user->getSalt());
- $user->setPassword($password);
-
- $em = $this->getDoctrine()->getManager();
- $em->persist($user);
- $em->flush();
-
- $this->get('session')->getFlashBag()->add(
- 'success',
- 'Password is successfully changed'
- );
- }
-
- return $this->render('AppBundle:User:settings.html.twig', [
- 'form' => $form->createView()]
- );
- }
-
- /**
- * @Route("/login_check", name="login_check")
- */
- public function loginCheckAction()
- {
- // this controller will not be executed,
- // as the route is handled by the Security system
- }
-}
diff --git a/symfony/notejam/src/AppBundle/Entity/Note.php b/symfony/notejam/src/AppBundle/Entity/Note.php
deleted file mode 100644
index 08f5a8676..000000000
--- a/symfony/notejam/src/AppBundle/Entity/Note.php
+++ /dev/null
@@ -1,194 +0,0 @@
-id;
- }
-
- /**
- * Set name
- *
- * @param string $name
- * @return Note
- */
- public function setName($name)
- {
- $this->name = $name;
-
- return $this;
- }
-
- /**
- * Get name
- *
- * @return string
- */
- public function getName()
- {
- return $this->name;
- }
-
- /**
- * Set text
- *
- * @param string $text
- * @return Note
- */
- public function setText($text)
- {
- $this->text = $text;
-
- return $this;
- }
-
- /**
- * Get text
- *
- * @return string
- */
- public function getText()
- {
- return $this->text;
- }
-
- /**
- * Get user
- *
- * @return User
- */
- public function getUser()
- {
- return $this->user;
- }
-
-
- /**
- * Set user
- *
- * @param User user
- * @return Note
- */
- public function setUser($user)
- {
- $this->user = $user;
- return $this;
- }
-
- /**
- * Get pad
- *
- * @return Pad
- */
- public function getPad()
- {
- return $this->pad;
- }
-
-
- /**
- * Set pad
- *
- * @param Pad pad
- * @return Note
- */
- public function setPad($pad)
- {
- $this->pad = $pad;
- return $this;
- }
-
- /**
- * Update timestamp
- *
- * @ORM\PrePersist
- * @ORM\PreUpdate
- */
- public function setUpdatedAt()
- {
- $this->updated_at = new \DateTime('now');
- }
-
- /**
- * Get last update time
- *
- * @return string formatted date
- */
- public function getUpdatedAt()
- {
- return $this->updated_at->format('d M. Y');
- }
-
- /**
- * Get name
- *
- * @return string
- */
- public function __toString() {
- return $this->getName();
- }
-}
diff --git a/symfony/notejam/src/AppBundle/Entity/Pad.php b/symfony/notejam/src/AppBundle/Entity/Pad.php
deleted file mode 100644
index 0ae63895d..000000000
--- a/symfony/notejam/src/AppBundle/Entity/Pad.php
+++ /dev/null
@@ -1,119 +0,0 @@
-id;
- }
-
- /**
- * Set name
- *
- * @param string $name
- * @return Pad
- */
- public function setName($name)
- {
- $this->name = $name;
- return $this;
- }
-
- /**
- * Get name
- *
- * @return string
- */
- public function getName()
- {
- return $this->name;
- }
-
- /**
- * Get user
- *
- * @return User
- */
- public function getUser()
- {
- return $this->user;
- }
-
-
- /**
- * Set user
- *
- * @param User user
- * @return Pad
- */
- public function setUser($user)
- {
- $this->user = $user;
- return $this;
- }
-
- /**
- * Get name
- *
- * @return string
- */
- public function __toString() {
- return $this->getName();
- }
-
- /**
- * Get notes
- *
- * @return Notes
- */
- public function getNotes() {
- return $this->notes;
- }
-}
diff --git a/symfony/notejam/src/AppBundle/Entity/User.php b/symfony/notejam/src/AppBundle/Entity/User.php
deleted file mode 100644
index 595a09ed2..000000000
--- a/symfony/notejam/src/AppBundle/Entity/User.php
+++ /dev/null
@@ -1,238 +0,0 @@
-isActive = true;
- $this->salt = md5(uniqid(null, true));
-
- $this->pads = new ArrayCollection();
- }
-
- /**
- * @inheritDoc
- */
- public function getUsername()
- {
- return $this->email;
- }
-
- /**
- * @inheritDoc
- */
- public function getSalt()
- {
- return $this->salt;
- }
-
- /**
- * @inheritDoc
- */
- public function getPassword()
- {
- return $this->password;
- }
-
- /**
- * @inheritDoc
- */
- public function getRoles()
- {
- return array('ROLE_USER');
- }
-
- /**
- * @inheritDoc
- */
- public function eraseCredentials()
- {
- }
-
- /**
- * @see \Serializable::serialize()
- */
- public function serialize()
- {
- return serialize(array(
- $this->id,
- ));
- }
-
- /**
- * @see \Serializable::unserialize()
- */
- public function unserialize($serialized)
- {
- list (
- $this->id,
- ) = unserialize($serialized);
- }
-
- /**
- * Get id
- *
- * @return integer
- */
- public function getId()
- {
- return $this->id;
- }
-
- /**
- * Set username
- *
- * @param string $username
- * @return User
- */
- public function setUsername($username)
- {
- $this->email = $username;
-
- return $this;
- }
-
- /**
- * Set salt
- *
- * @param string $salt
- * @return User
- */
- public function setSalt($salt)
- {
- $this->salt = $salt;
-
- return $this;
- }
-
- /**
- * Set password
- *
- * @param string $password
- * @return User
- */
- public function setPassword($password)
- {
- $this->password = $password;
-
- return $this;
- }
-
- /**
- * Set email
- *
- * @param string $email
- * @return User
- */
- public function setEmail($email)
- {
- $this->email = $email;
-
- return $this;
- }
-
- /**
- * Get email
- *
- * @return string
- */
- public function getEmail()
- {
- return $this->email;
- }
-
- /**
- * Set isActive
- *
- * @param boolean $isActive
- * @return User
- */
- public function setIsActive($isActive)
- {
- $this->isActive = $isActive;
-
- return $this;
- }
-
- /**
- * Get isActive
- *
- * @return boolean
- */
- public function getIsActive()
- {
- return $this->isActive;
- }
-
- /**
- * Get user pads
- *
- * @return Pads
- */
- public function getPads() {
- return $this->pads;
- }
-
- /**
- * Get user notes
- *
- * @return Notes
- */
- public function getNotes() {
- return $this->notes;
- }
-}
diff --git a/symfony/notejam/src/AppBundle/Form/Type/ChangePasswordType.php b/symfony/notejam/src/AppBundle/Form/Type/ChangePasswordType.php
deleted file mode 100644
index d55759fe4..000000000
--- a/symfony/notejam/src/AppBundle/Form/Type/ChangePasswordType.php
+++ /dev/null
@@ -1,43 +0,0 @@
-add('current_password', 'password', [
- 'constraints' => new UserPassword()
- ]);
- $builder->add('new_password', 'repeated', [
- 'first_name' => 'password',
- 'second_name' => 'confirm',
- 'type' => 'password',
- 'invalid_message' => 'The password fields do not match.',
- ]);
- $builder->add('save', 'submit', [
- 'attr' => ['type' => 'submit']
- ]);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return 'change_password';
- }
-}
-
-
diff --git a/symfony/notejam/src/AppBundle/Form/Type/NoteType.php b/symfony/notejam/src/AppBundle/Form/Type/NoteType.php
deleted file mode 100644
index 9ceb7449f..000000000
--- a/symfony/notejam/src/AppBundle/Form/Type/NoteType.php
+++ /dev/null
@@ -1,57 +0,0 @@
-user = $user;
- }
-
- /**
- * {@inheritdoc}
- */
- public function buildForm(FormBuilderInterface $builder, array $options)
- {
- $builder->add('name', 'text');
- $builder->add('text', 'textarea');
- $builder->add('pad', 'entity', [
- 'class' => 'AppBundle:Pad',
- 'choices' => $this->user->getPads(),
- 'empty_value' => '----------',
- 'required' => false
- ]);
- }
-
- /**
- * {@inheritdoc}
- */
- public function configureOptions(OptionsResolver $resolver)
- {
- $resolver->setDefaults([
- 'data_class' => Note::class
- ]);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return 'note';
- }
-}
diff --git a/symfony/notejam/src/AppBundle/Form/Type/PadType.php b/symfony/notejam/src/AppBundle/Form/Type/PadType.php
deleted file mode 100644
index 47ae2cf52..000000000
--- a/symfony/notejam/src/AppBundle/Form/Type/PadType.php
+++ /dev/null
@@ -1,40 +0,0 @@
-add('name', 'text');
- }
-
- /**
- * {@inheritdoc}
- */
- public function configureOptions(OptionsResolver $resolver)
- {
- $resolver->setDefaults([
- 'data_class' => Pad::class
- ]);
- }
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return 'pad';
- }
-}
diff --git a/symfony/notejam/src/AppBundle/Form/Type/UserType.php b/symfony/notejam/src/AppBundle/Form/Type/UserType.php
deleted file mode 100644
index 28798368a..000000000
--- a/symfony/notejam/src/AppBundle/Form/Type/UserType.php
+++ /dev/null
@@ -1,54 +0,0 @@
-add('email', 'email');
- $builder->add('password', 'repeated', [
- 'first_name' => 'password',
- 'second_name' => 'confirm',
- 'type' => 'password',
- 'second_options' => [
- 'constraints' => [
- new NotBlank()
- ],
- ],
- 'invalid_message' => 'The password fields do not match.',
- ]);
- }
-
- /**
- * {@inheritdoc}
- */
- public function configureOptions(OptionsResolver $resolver)
- {
- $resolver->setDefaults([
- 'data_class' => User::class
- ]);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return 'user_type';
- }
-}
-
diff --git a/symfony/notejam/src/AppBundle/Repository/NoteRepository.php b/symfony/notejam/src/AppBundle/Repository/NoteRepository.php
deleted file mode 100644
index 0e32013b7..000000000
--- a/symfony/notejam/src/AppBundle/Repository/NoteRepository.php
+++ /dev/null
@@ -1,14 +0,0 @@
-New note{% endblock %}
-
-{% block body %}
- {{ form_start(form, {'attr': {'class': 'note'} }) }}
- {{ form_label(form.name) }}
- {{ form_widget(form.name) }}
- {{ form_errors(form.name) }}
-
- {{ form_label(form.text) }}
- {{ form_widget(form.text) }}
- {{ form_errors(form.text) }}
-
- {{ form_label(form.pad) }}
- {{ form_widget(form.pad) }}
- {{ form_errors(form.pad) }}
-
- Save
- {{ form_end(form) }}
-{% endblock %}
-
diff --git a/symfony/notejam/src/AppBundle/Resources/views/Note/delete.html.twig b/symfony/notejam/src/AppBundle/Resources/views/Note/delete.html.twig
deleted file mode 100644
index 718c2fe13..000000000
--- a/symfony/notejam/src/AppBundle/Resources/views/Note/delete.html.twig
+++ /dev/null
@@ -1,13 +0,0 @@
-{% extends 'base.html.twig' %}
-
-{% block title %}{{ note.name }}{% endblock %}
-{% block page_title %}{{ note.name }} {% endblock %}
-
-{% block body %}
- Are you sure you want to delete {{ note.name }}?
-
- Yes, delete I want to delete it
- Cancel
-
-{% endblock %}
-
diff --git a/symfony/notejam/src/AppBundle/Resources/views/Note/edit.html.twig b/symfony/notejam/src/AppBundle/Resources/views/Note/edit.html.twig
deleted file mode 100644
index 910df540c..000000000
--- a/symfony/notejam/src/AppBundle/Resources/views/Note/edit.html.twig
+++ /dev/null
@@ -1,24 +0,0 @@
-{% extends 'base.html.twig' %}
-
-{% block title %}{{ note.name }}{% endblock %}
-{% block page_title %}{{ note.name }} {% endblock %}
-
-{% block body %}
- {{ form_start(form, {'attr': {'class': 'note'} }) }}
- {{ form_label(form.name) }}
- {{ form_widget(form.name) }}
- {{ form_errors(form.name) }}
-
- {{ form_label(form.text) }}
- {{ form_widget(form.text) }}
- {{ form_errors(form.text) }}
-
- {{ form_label(form.pad) }}
- {{ form_widget(form.pad) }}
- {{ form_errors(form.pad) }}
-
- Save
- {{ form_end(form) }}
-{% endblock %}
-
-
diff --git a/symfony/notejam/src/AppBundle/Resources/views/Note/list.html.twig b/symfony/notejam/src/AppBundle/Resources/views/Note/list.html.twig
deleted file mode 100644
index aa0acd3e2..000000000
--- a/symfony/notejam/src/AppBundle/Resources/views/Note/list.html.twig
+++ /dev/null
@@ -1,32 +0,0 @@
-{% extends 'base.html.twig' %}
-
-{% block title %}All notes ({{ notes|length }}){% endblock %}
-{% block page_title %}All notes ({{ notes|length }}) {% endblock %}
-
-{% block body %}
-{% if notes|length %}
-
-
- Note ↑ ↓
- Pad
- Last modified ↑ ↓
-
- {% for note in notes %}
-
- {{ note.name }}
-
- {% if note.pad %}
- {{ note.pad }}
- {% else %}
- No pad
- {% endif %}
-
- {{ note.getUpdatedAt }}
-
- {% endfor %}
-
-{% else %}
- Create your first note.
-{% endif %}
-New note
-{% endblock %}
diff --git a/symfony/notejam/src/AppBundle/Resources/views/Note/view.html.twig b/symfony/notejam/src/AppBundle/Resources/views/Note/view.html.twig
deleted file mode 100644
index 7d81d0329..000000000
--- a/symfony/notejam/src/AppBundle/Resources/views/Note/view.html.twig
+++ /dev/null
@@ -1,13 +0,0 @@
-{% extends 'base.html.twig' %}
-
-{% block title %}{{ note.name }}{% endblock %}
-{% block page_title %}{{ note.name }} {% endblock %}
-
-{% block body %}
- Last edited at 10:32
-
- {{ note.text }}
-
- Edit
- Delete it
-{% endblock %}
diff --git a/symfony/notejam/src/AppBundle/Resources/views/Pad/create.html.twig b/symfony/notejam/src/AppBundle/Resources/views/Pad/create.html.twig
deleted file mode 100644
index ae1cc0f7b..000000000
--- a/symfony/notejam/src/AppBundle/Resources/views/Pad/create.html.twig
+++ /dev/null
@@ -1,14 +0,0 @@
-{% extends 'base.html.twig' %}
-
-{% block title %}New pad{% endblock %}
-{% block page_title %}New pad {% endblock %}
-
-{% block body %}
- {{ form_start(form) }}
- {{ form_label(form.name) }}
- {{ form_widget(form.name) }}
- {{ form_errors(form.name) }}
-
- Create
- {{ form_end(form) }}
-{% endblock %}
diff --git a/symfony/notejam/src/AppBundle/Resources/views/Pad/delete.html.twig b/symfony/notejam/src/AppBundle/Resources/views/Pad/delete.html.twig
deleted file mode 100644
index 77cd4394d..000000000
--- a/symfony/notejam/src/AppBundle/Resources/views/Pad/delete.html.twig
+++ /dev/null
@@ -1,12 +0,0 @@
-{% extends 'base.html.twig' %}
-
-{% block title %}{{ pad.name }}{% endblock %}
-{% block page_title %}{{ pad.name }} {% endblock %}
-
-{% block body %}
- Are you sure you want to delete {{ pad.name }} and all related notes?
-
- Yes, delete I want to delete it
- Cancel
-
-{% endblock %}
diff --git a/symfony/notejam/src/AppBundle/Resources/views/Pad/edit.html.twig b/symfony/notejam/src/AppBundle/Resources/views/Pad/edit.html.twig
deleted file mode 100644
index 4550e4abe..000000000
--- a/symfony/notejam/src/AppBundle/Resources/views/Pad/edit.html.twig
+++ /dev/null
@@ -1,15 +0,0 @@
-{% extends 'base.html.twig' %}
-
-{% block title %}{{ pad.name }}{% endblock %}
-{% block page_title %}{{ pad.name }} {% endblock %}
-
-{% block body %}
- {{ form_start(form) }}
- {{ form_label(form.name) }}
- {{ form_widget(form.name) }}
- {{ form_errors(form.name) }}
-
- Save
- {{ form_end(form) }}
- Delete pad
-{% endblock %}
diff --git a/symfony/notejam/src/AppBundle/Resources/views/Pad/list.html.twig b/symfony/notejam/src/AppBundle/Resources/views/Pad/list.html.twig
deleted file mode 100644
index 9edc44188..000000000
--- a/symfony/notejam/src/AppBundle/Resources/views/Pad/list.html.twig
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
My pads
-
- {% if pads.count %}
-
- {% else %}
- No pads
- {% endif %}
-
- New pad
-
-
diff --git a/symfony/notejam/src/AppBundle/Resources/views/Pad/notes.html.twig b/symfony/notejam/src/AppBundle/Resources/views/Pad/notes.html.twig
deleted file mode 100644
index f4eb928b0..000000000
--- a/symfony/notejam/src/AppBundle/Resources/views/Pad/notes.html.twig
+++ /dev/null
@@ -1,35 +0,0 @@
-{% extends 'base.html.twig' %}
-
-{% block title %}{{ pad.name }} ({{ notes|length}} notes){% endblock %}
-{% block page_title %}{{ pad.name }} ({{ notes|length}}) {% endblock %}
-
-{% block body %}
-{% if notes|length %}
-
-
- Note ↑ ↓
- Pad
- Last modified ↑ ↓
-
- {% for note in notes %}
-
- {{ note.name }}
-
- {% if note.pad %}
- {{ note.pad }}
- {% else %}
- No pad
- {% endif %}
-
- {{ note.getUpdatedAt }}
-
- {% endfor %}
-
-{% else %}
- Create first note in the pad.
-{% endif %}
-
-New note
-Pad settings
-{% endblock %}
-
diff --git a/symfony/notejam/src/AppBundle/Resources/views/User/forgot-password.html.twig b/symfony/notejam/src/AppBundle/Resources/views/User/forgot-password.html.twig
deleted file mode 100644
index efa0ba0a0..000000000
--- a/symfony/notejam/src/AppBundle/Resources/views/User/forgot-password.html.twig
+++ /dev/null
@@ -1,15 +0,0 @@
-{% extends 'user.html.twig' %}
-
-{% block title %}Forgot Password?{% endblock %}
-{% block page_title %}Forgot Password? {% endblock %}
-
-{% block body %}
- {{ form_start(form, {'attr': {'class': 'offset-by-six sign-in'}}) }}
- {{ form_label(form.email) }}
- {{ form_widget(form.email) }}
- {{ form_errors(form.email) }}
-
- {{ form_widget(form.save) }}
- {{ form_end(form) }}
-{% endblock %}
-
diff --git a/symfony/notejam/src/AppBundle/Resources/views/User/index.html.twig b/symfony/notejam/src/AppBundle/Resources/views/User/index.html.twig
deleted file mode 100644
index 55b972aa9..000000000
--- a/symfony/notejam/src/AppBundle/Resources/views/User/index.html.twig
+++ /dev/null
@@ -1,4 +0,0 @@
-{% extends 'base.html.twig' %}
-{% block body %}
- Hello, {{ name }}!
-{% endblock %}
diff --git a/symfony/notejam/src/AppBundle/Resources/views/User/settings.html.twig b/symfony/notejam/src/AppBundle/Resources/views/User/settings.html.twig
deleted file mode 100644
index 6e8dcf0bd..000000000
--- a/symfony/notejam/src/AppBundle/Resources/views/User/settings.html.twig
+++ /dev/null
@@ -1,22 +0,0 @@
-{% extends 'user.html.twig' %}
-
-{% block title %}Account Settings{% endblock %}
-{% block page_title %}Account Settings {% endblock %}
-
-{% block body %}
- {{ form_start(form, {'attr': {'class': 'offset-by-six sign-in'}}) }}
- {{ form_label(form.current_password) }}
- {{ form_widget(form.current_password) }}
- {{ form_errors(form.current_password) }}
-
- {{ form_label(form.new_password.password) }}
- {{ form_widget(form.new_password.password) }}
- {{ form_errors(form.new_password.password) }}
-
- {{ form_label(form.new_password.confirm) }}
- {{ form_widget(form.new_password.confirm) }}
- {{ form_errors(form.new_password.confirm) }}
-
- {{ form_widget(form.save) }}
- {{ form_end(form) }}
-{% endblock %}
diff --git a/symfony/notejam/src/AppBundle/Resources/views/User/signin.html.twig b/symfony/notejam/src/AppBundle/Resources/views/User/signin.html.twig
deleted file mode 100644
index d256f8ab9..000000000
--- a/symfony/notejam/src/AppBundle/Resources/views/User/signin.html.twig
+++ /dev/null
@@ -1,22 +0,0 @@
-{% extends 'user.html.twig' %}
-
-{% block title %}Sign In{% endblock %}
-{% block page_title %}Sign In {% endblock %}
-
-{% block body %}
- {{ form_start(form, {'attr': {'class': 'offset-by-six sign-in'}}) }}
- {{ form_label(form.email) }}
- {{ form_widget(form.email) }}
- {{ form_errors(form.email) }}
-
- {{ form_label(form.password) }}
- {{ form_widget(form.password) }}
- {{ form_errors(form.password) }}
-
- {{ form_widget(form.save) }} or Sign up
-
- Forgot Password?
- {{ form_end(form) }}
-{% endblock %}
-
-
diff --git a/symfony/notejam/src/AppBundle/Resources/views/User/signup.html.twig b/symfony/notejam/src/AppBundle/Resources/views/User/signup.html.twig
deleted file mode 100644
index e4961b49d..000000000
--- a/symfony/notejam/src/AppBundle/Resources/views/User/signup.html.twig
+++ /dev/null
@@ -1,23 +0,0 @@
-{% extends 'user.html.twig' %}
-
-{% block title %}Sign Up{% endblock %}
-{% block page_title %}Sign Up {% endblock %}
-
-{% block body %}
- {{ form_start(form, {'attr': {'class': 'offset-by-six sign-in'}}) }}
- {{ form_label(form.email) }}
- {{ form_widget(form.email) }}
- {{ form_errors(form.email) }}
-
- {{ form_label(form.password.password) }}
- {{ form_widget(form.password.password) }}
- {{ form_errors(form.password.password , {'attr': {'class': 'errorlist'}}) }}
-
- {{ form_label(form.password.confirm) }}
- {{ form_widget(form.password.confirm) }}
- {{ form_errors(form.password.confirm) }}
-
- Sign up
- {{ form_end(form) }}
-{% endblock %}
-
diff --git a/symfony/notejam/src/AppBundle/Tests/Controller/NoteControllerTest.php b/symfony/notejam/src/AppBundle/Tests/Controller/NoteControllerTest.php
deleted file mode 100644
index d62cdac06..000000000
--- a/symfony/notejam/src/AppBundle/Tests/Controller/NoteControllerTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-loadFixtures(array());
- // init kernel to init entity manager
- static::$kernel = static::createKernel(array('environment' => 'test'));
- static::$kernel->boot();
- }
-
- public function getEm() {
- $this->em = static::$kernel->getContainer()
- ->get('doctrine')
- ->getManager() ;
- return $this->em;
- }
-
- private function _createUser($email, $password) {
- $user = new User();
-
- $encoder = static::$kernel->getContainer()
- ->get('security.encoder_factory')
- ->getEncoder($user);
-
- $password = $encoder->encodePassword($password, $user->getSalt());
- $user->setEmail($email)
- ->setPassword($password);
-
- $this->getEm()->persist($user);
- $this->getEm()->flush();
-
- return $user;
- }
-
- private function _createPad($name, $user) {
- $pad = new Pad();
- $pad->setName($name);
- $pad->setUser($user);
-
- $this->getEm()->persist($pad);
- $this->getEm()->flush();
-
- return $pad;
- }
-
- private function _signIn($user)
- {
- $client = static::createClient();
- $session = $client->getContainer()->get('session');
-
- $firewall = 'main';
- $token = new UsernamePasswordToken(
- $user, $user->getPassword(), $firewall, array('ROLE_USER')
- );
- $session->set('_security_'.$firewall, serialize($token));
- $session->save();
-
- $cookie = new Cookie($session->getName(), $session->getId());
- $client->getCookieJar()->set($cookie);
- return $client;
- }
-
- public function testCreatePadSuccess()
- {
- $email = 'test@example.com';
- $password = '123123';
- $user = $this->_createUser($email, $password);
-
- $client = $this->_signIn($user);
- $client->followRedirects();
- $crawler = $client->request('GET', '/pads/create');
- $form = $crawler->filter('button')->form();
- $form['pad[name]'] = 'Pad';
- $crawler = $client->submit($form);
- $this->assertEquals(1, $crawler->filter('nav > ul > li')->count());
- $this->assertCount(
- 1, $this->getEm()->getRepository('AppBundle:Pad')->findAll()
- );
- }
-
- public function testCreatePadErrorRequiredFields()
- {
- $email = 'test@example.com';
- $password = '123123';
- $user = $this->_createUser($email, $password);
-
- $client = $this->_signIn($user);
- $crawler = $client->request('GET', '/pads/create');
- $form = $crawler->filter('button')->form();
- $crawler = $client->submit($form);
- $this->assertEquals(1, $crawler->filter('ul.errorlist > li')->count());
- }
-
- public function testEditPadSuccess()
- {
- $email = 'test@example.com';
- $password = '123123';
- $user = $this->_createUser($email, $password);
- $pad = $this->_createPad('initial pad', $user);
-
- $client = $this->_signIn($user);
- $crawler = $client->request('GET', "/pads/{$pad->getId()}/edit");
- $form = $crawler->filter('button')->form();
- $newName = 'new pad name';
- $form['pad[name]'] = $newName;
- $crawler = $client->submit($form);
-
- $updatedPad = $this->getEm()->getRepository(
- 'AppBundle:Pad'
- )->find(1);
- $this->assertEquals($newName, $updatedPad->getName());
- }
-
- public function testEditPadErrorRequiredFields()
- {
- $email = 'test@example.com';
- $password = '123123';
- $user = $this->_createUser($email, $password);
- $pad = $this->_createPad('initial pad', $user);
-
- $client = $this->_signIn($user);
- $crawler = $client->request('GET', "/pads/{$pad->getId()}/edit");
- $form = $crawler->filter('button')->form();
- $form['pad[name]'] = "";
- $crawler = $client->submit($form);
- $this->assertEquals(1, $crawler->filter('ul.errorlist > li')->count());
- }
-
- public function testDeletePadSuccess()
- {
- $email = 'test@example.com';
- $password = '123123';
- $user = $this->_createUser($email, $password);
- $pad = $this->_createPad('test pad', $user);
-
- $client = $this->_signIn($user);
- $crawler = $client->request('GET', "/pads/{$pad->getId()}/delete");
- $form = $crawler->filter('button')->form();
- $crawler = $client->submit($form);
-
- $this->assertCount(
- 0, $this->getEm()->getRepository('AppBundle:Pad')->findAll()
- );
- }
-
- public function testDeletePadErrorAnotherUser()
- {
- $email = 'test@example.com';
- $password = '123123';
- $user = $this->_createUser($email, $password);
- $pad = $this->_createPad('test pad', $user);
-
- $anotherUser = $this->_createUser('test2@example.com', $password);
- $client = $this->_signIn($anotherUser);
- $crawler = $client->request('GET', "/pads/{$pad->getId()}/delete");
- $this->assertTrue($client->getResponse()->isNotFound());
- }
-
- public function testViewPadNotesSuccess()
- {
- $email = 'test@example.com';
- $password = '123123';
- $user = $this->_createUser($email, $password);
- $pad = $this->_createPad('test pad', $user);
-
- $client = $this->_signIn($user);
- $client->followRedirects();
- $crawler = $client->request('GET', "/pads/{$pad->getId()}/notes");
- $this->assertTrue($client->getResponse()->isSuccessful());
- }
-}
-
-
diff --git a/symfony/notejam/web/.htaccess b/symfony/notejam/web/.htaccess
deleted file mode 100644
index 0c5f37def..000000000
--- a/symfony/notejam/web/.htaccess
+++ /dev/null
@@ -1,52 +0,0 @@
-# Use the front controller as index file. It serves as a fallback solution when
-# every other rewrite/redirect fails (e.g. in an aliased environment without
-# mod_rewrite). Additionally, this reduces the matching process for the
-# start page (path "/") because otherwise Apache will apply the rewriting rules
-# to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl).
-DirectoryIndex app.php
-
-
- RewriteEngine On
-
- # Determine the RewriteBase automatically and set it as environment variable.
- # If you are using Apache aliases to do mass virtual hosting or installed the
- # project in a subdirectory, the base path will be prepended to allow proper
- # resolution of the app.php file and to redirect to the correct URI. It will
- # work in environments without path prefix as well, providing a safe, one-size
- # fits all solution. But as you do not need it in this case, you can comment
- # the following 2 lines to eliminate the overhead.
- RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
- RewriteRule ^(.*) - [E=BASE:%1]
-
- # Redirect to URI without front controller to prevent duplicate content
- # (with and without `/app.php`). Only do this redirect on the initial
- # rewrite by Apache and not on subsequent cycles. Otherwise we would get an
- # endless redirect loop (request -> rewrite to front controller ->
- # redirect -> request -> ...).
- # So in case you get a "too many redirects" error or you always get redirected
- # to the start page because your Apache does not expose the REDIRECT_STATUS
- # environment variable, you have 2 choices:
- # - disable this feature by commenting the following 2 lines or
- # - use Apache >= 2.3.9 and replace all L flags by END flags and remove the
- # following RewriteCond (best solution)
- RewriteCond %{ENV:REDIRECT_STATUS} ^$
- RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
-
- # If the requested filename exists, simply serve it.
- # We only want to let Apache serve files and not directories.
- RewriteCond %{REQUEST_FILENAME} -f
- RewriteRule .? - [L]
-
- # Rewrite all other queries to the front controller.
- RewriteRule .? %{ENV:BASE}/app.php [L]
-
-
-
-
- # When mod_rewrite is not available, we instruct a temporary redirect of
- # the start page to the front controller explicitly so that the website
- # and the generated links can still be used.
- RedirectMatch 302 ^/$ /app.php/
- # RedirectTemp cannot be used instead
-
-
diff --git a/symfony/notejam/web/app.php b/symfony/notejam/web/app.php
deleted file mode 100644
index b70e120d3..000000000
--- a/symfony/notejam/web/app.php
+++ /dev/null
@@ -1,25 +0,0 @@
-register(true);
-*/
-
-require_once __DIR__.'/../app/AppKernel.php';
-//require_once __DIR__.'/../app/AppCache.php';
-
-$kernel = new AppKernel('prod', false);
-$kernel->loadClassCache();
-//$kernel = new AppCache($kernel);
-$request = Request::createFromGlobals();
-$response = $kernel->handle($request);
-$response->send();
-$kernel->terminate($request, $response);
diff --git a/symfony/notejam/web/app_dev.php b/symfony/notejam/web/app_dev.php
deleted file mode 100644
index 872a88283..000000000
--- a/symfony/notejam/web/app_dev.php
+++ /dev/null
@@ -1,30 +0,0 @@
-loadClassCache();
-$request = Request::createFromGlobals();
-$response = $kernel->handle($request);
-$response->send();
-$kernel->terminate($request, $response);
diff --git a/symfony/notejam/web/apple-touch-icon.png b/symfony/notejam/web/apple-touch-icon.png
deleted file mode 100644
index 11f17e6d8..000000000
Binary files a/symfony/notejam/web/apple-touch-icon.png and /dev/null differ
diff --git a/symfony/notejam/web/config.php b/symfony/notejam/web/config.php
deleted file mode 100644
index 162acfc7b..000000000
--- a/symfony/notejam/web/config.php
+++ /dev/null
@@ -1,124 +0,0 @@
-getFailedRequirements();
-$minorProblems = $symfonyRequirements->getFailedRecommendations();
-
-?>
-
-
-
-
-
- Symfony Configuration
-
-
-
-
-
-
-
-
-
-
-
-
Welcome!
-
Welcome to your new Symfony project.
-
- This script will guide you through the basic configuration of your project.
- You can also do the same by editing the ‘app/config/parameters.yml ’ file directly.
-
-
-
-
Major problems
-
Major problems have been detected and must be fixed before continuing:
-
-
- getHelpHtml() ?>
-
-
-
-
-
-
Recommendations
-
- Additionally, toTo enhance your Symfony experience,
- it’s recommended that you fix the following:
-
-
-
- getHelpHtml() ?>
-
-
-
-
- hasPhpIniConfigIssue()): ?>
-
*
- getPhpIniConfigPath()): ?>
- Changes to the php.ini file must be done in "getPhpIniConfigPath() ?> ".
-
- To change settings, create a "php.ini ".
-
-
-
-
-
-
Your configuration looks good to run Symfony.
-
-
-
-
-
-
-
Symfony Standard Edition
-
-
-
diff --git a/symfony/notejam/web/css/style.css b/symfony/notejam/web/css/style.css
deleted file mode 100644
index 03081155f..000000000
--- a/symfony/notejam/web/css/style.css
+++ /dev/null
@@ -1,396 +0,0 @@
-/*
-* Skeleton V1.0.3
-* Copyright 2011, Dave Gamache
-* www.getskeleton.com
-* Free to use under the MIT license.
-* http://www.opensource.org/licenses/mit-license.php
-* 7/17/2011
-*/
-
-
-/* Documentation Styles
-================================================== */
- div.container {
- padding-top: 40px; }
-
- /* Doc nav */
- nav {
- width: 160px; }
- #logo, .bold-header {
- margin-bottom: 30px;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- letter-spacing: -1px;
- color: #555;
- font-weight: bold; }
- .bold-header span {
- font-weight: normal;
- font-size: 23px;
- }
- .bold-header a.header {
- text-decoration: none;
- color: inherit;
- }
- .bold-header span.jam {
- font-size: 46px;
- line-height: 50px;
- }
- nav ul {
- float: left; }
- nav ul li {
- display: block;
- margin-bottom: 10px; }
- nav ul li a,
- nav ul li a:visited,
- nav ul li a:active {
- font-size: 14px;
- color: #555;
- text-decoration: none;
- font-weight: bold; }
- nav ul li a:hover,
- nav ul li a:focus {
- color: #222; }
- header h1 {
- font-size: 52px;
- line-height: 61px;
- letter-spacing: -1px;
- font-weight: normal;
- font-family: "Georgia", "Times New Roman", Helvetica, Arial, sans-serif; }
- hr.large {
- border: none;
- height: 8px;
- background: #ebebeb;
- margin: 50px 0; }
- div.doc-section {
- margin: 30px 0; }
-
- #whatAndWhy .row {
- padding: 30px 0 0; }
-
- #typography blockquote {
- margin-top: 20px; }
-
- .hidden-code a {
- font-size: 12px;
- color: #999; }
- .hidden-code>div {
- display: none; }
-
-
- /* Grid */
- #grid .column,
- #grid .columns {
- background: #ddd;
- height: 25px;
- line-height: 25px;
- margin-bottom: 10px;
- text-align: center;
- text-transform: uppercase;
- color: #555;
- font-size: 12px;
- font-weight: bold;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px; }
- #grid .column:hover,
- #grid .columns:hover {
- background: #bbb;
- color: #333; }
- #grid .example-grid { overflow: hidden; }
-
- .post-button-note,
- .post-button-note a {
- font-size: 11px;
- color: #999; }
-
- #examples .four.columns a {
- text-decoration: none;
- }
- #examples .four.columns a:hover {
- text-decoration: underline;
- }
-
-
- .resize {
- position: fixed;
- bottom: 0;
- right: 0;
- height: 80px;
- width: 80px;
- background: url(images/resize.png); }
-
-
- img {
- max-width: 100%;
- height: auto; }
-
- .gist-meta { display: none !important;}
-
- ul ul ul li { margin-bottom: 3px; }
-
- .twitter-share-button { margin-bottom: -18px; }
-
- /* Table stylesheets */
- table {
- width: 100%;
- border-collapse: collapse;
- }
-
- table th, table td {
- padding: 10px 10px 9px;
- font-size: 13px;
- line-height: 18px;
- text-align: left;
- }
-
- table td {
- vertical-align: top;
- border-top: solid 1px #ddd;
- }
-
- table th {
- padding-top: 9px;
- font-weight: bold;
- vertical-align: middle;
- }
-
- table.condensed th, table.condensed td {
- padding: 5px 5px 4px;
- }
-
- table.bordered {
- border-collapse: separate;
- border: solid 1px #ddd;
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
- }
-
- table.bordered th + th,
- table.bordered th + td,
- table.bordered td + td {
- border-left: solid 1px #ddd;
- }
-
- .zebra-striped tbody tr:nth-child(odd) td,
- .zebra-striped tbody tr:nth-child(odd) th {
- background: #f5f5f5;
- }
-
-.carbonad,
-.carbonad-image,
-.carbonad-text,
-.carbonad-tag {
- background: none !important;
- border: none !important;
- margin-left: 0 !important;
-}
-.carbonad-tag {
- margin-top: 6px !important;
- padding-top: 0 !important;
-}
-.carbonad-text {
- height: auto !important;
-}
-.carbonad-image {
- margin-top: 0 !important;
-}
-
-.hidden-text {
- font-size: 12px;
- color: #999;
-}
-
-td.date, th.date {
- text-align: right;
-}
-
-td.date {
- font-style: italic;
-}
-
-form.note input[type="text"], form.note textarea {
- width: 100%;
-}
-
-form hr {
- width: 218px;
- margin: 10px 0px;
-}
-
-form.note textarea {
- height: 250px;
-}
-
-div.content-area {
- min-height: 600px;
-}
-
-hr.footer {
- margin-bottom: 10px;
-}
-
-div.footer {
- margin-bottom: 10px;
- text-align: center;
- font-size: 12px;
-}
-
-form.sign-in {
- margin: 50px 0 0 0;
-}
-
-.sort_arrow {
- text-decoration: none;
-}
-
-.sort_arrow:hover {
- text-decoration: none;
- color: red;
-}
-
-div.sign-in-out-block {
- position: absolute;
- right: 14px;
- top: 8px;
- font-size: 12px;
-}
-
-div.sign-in-out-block a {
- /*text-decoration: none;*/
-}
-
-a.small-red {
- color: red;
- font-size: 12px;
-}
-
-table.notes {
- margin: 0 0 20px 0;
-}
-
-table.notes th.note {
- width: 72%;
-}
-
-table.notes td.pad {
- color: grey;
-}
-
-table.notes td.pad a {
- color: grey;
- text-decoration: underline;
- font-style: normal;
-}
-
-
-table.notes td.pad a:hover {
- color: black;
-}
-
-p.empty {
- color: grey;
- font-style: italic;
-}
-
-a.delete-note {
- float: right;
- font-size: 12px;
- color: red;
-}
-
-.red, input.red {
- color: red !important;
-}
-
-ul.errorlist, ul.errors {
- margin: -18px 0 0 0;
-}
-
-ul.errorlist li, ul.errors li {
- color: red;
-}
-
-.alert-area {
- text-align: center;
-}
-
-.alert {
- padding: 5px 8px;
- margin: 0 0 12px 0;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
-}
-
-.alert-success {
- color: #468847;
- background-color: #dff0d8;
- border: 1px solid #d6e9c6;
-}
-
-.alert-error {
- color: #b94a48;
- background-color: #f2dede;
- border: 1px solid #eed3d7;
-}
-
- /* Mobile */
- @media only screen and (max-width: 767px) {
- header h1 { font-size: 34px; line-height: 37px; }
- nav { position: relative; }
- nav ul,
- .carbonad {
- display: none;
- }
- #logo { text-align: left; }
- #examples .four.columns {
- padding-top: 30px;
- }
- }
-
- /* Mobile Landscape */
- @media only screen and (min-width: 480px) and (max-width: 767px) {
- nav ul {
- display: none;
- }
- }
-
- /* Non 960 */
- @media only screen and (max-width: 959px) {
- #logo {
- font-size: 21px;
- margin-bottom: 15px; }
- nav .button {
- padding: 9px 20px 11px; }
- }
-
- /* iPad Portrait/Browser */
- @media only screen and (min-width: 768px) and (max-width: 959px) {
- nav {
- width: 124px; }
- }
-
- /* Mobile/Browser */
- @media only screen and (max-width: 767px) {}
-
- /* Mobile Landscape/Browser */
- @media only screen and (min-width: 480px) and (max-width: 767px) {}
-
- /* Anything smaller than standard 960 */
- @media only screen and (max-width: 959px) {}
-
-
- /* iPad Portrait Only */
- @media only screen and (min-width: 768px) and (max-width: 959px) and (max-device-width: 1000px) {}
-
- /* Mobile Only */
- @media only screen and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Mobile Landscape Only */
- @media only screen and (min-width: 480px) and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Anything smaller than standard 960 on a device */
- @media only screen and (max-width: 959px) and (max-device-width: 1000px) {
- .resize { display: none; }
- }
-
diff --git a/symfony/notejam/web/favicon.ico b/symfony/notejam/web/favicon.ico
deleted file mode 100644
index 864803618..000000000
Binary files a/symfony/notejam/web/favicon.ico and /dev/null differ
diff --git a/symfony/notejam/web/robots.txt b/symfony/notejam/web/robots.txt
deleted file mode 100644
index 214e41196..000000000
--- a/symfony/notejam/web/robots.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-# www.robotstxt.org/
-# www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449
-
-User-agent: *
diff --git a/terraform/modules/terraform-aws-ecs-codepipeline/fixtures.us-east-2.tfvars b/terraform/modules/terraform-aws-ecs-codepipeline/fixtures.us-east-2.tfvars
deleted file mode 100644
index 165eb9002..000000000
--- a/terraform/modules/terraform-aws-ecs-codepipeline/fixtures.us-east-2.tfvars
+++ /dev/null
@@ -1,123 +0,0 @@
-region = "us-east-2"
-
-availability_zones = ["us-east-2a", "us-east-2b"]
-
-namespace = "eg"
-
-stage = "test"
-
-name = "ecs-codepipeline"
-
-vpc_cidr_block = "172.16.0.0/16"
-
-ecs_launch_type = "FARGATE"
-
-network_mode = "awsvpc"
-
-ignore_changes_task_definition = true
-
-assign_public_ip = false
-
-propagate_tags = "TASK_DEFINITION"
-
-deployment_minimum_healthy_percent = 100
-
-deployment_maximum_percent = 200
-
-deployment_controller_type = "ECS"
-
-desired_count = 1
-
-task_memory = 512
-
-task_cpu = 256
-
-container_name = "geodesic"
-
-container_image = "cloudposse/geodesic"
-
-container_memory = 256
-
-container_memory_reservation = 128
-
-container_cpu = 256
-
-container_essential = true
-
-container_readonly_root_filesystem = false
-
-container_environment = [
- {
- name = "string_var"
- value = "I am a string"
- },
- {
- name = "true_boolean_var"
- value = true
- },
- {
- name = "false_boolean_var"
- value = false
- },
- {
- name = "integer_var"
- value = 42
- }
-]
-
-container_port_mappings = [
- {
- containerPort = 80
- hostPort = 80
- protocol = "tcp"
- },
- {
- containerPort = 443
- hostPort = 443
- protocol = "udp"
- }
-]
-
-github_oauth_token = "381cbacb0327261141808da9220815d33ad6bb1c"
-
-github_webhooks_token = "test"
-
-repo_owner = "roercik85"
-
-repo_name = "notejam"
-
-branch = "rgradzki-demo"
-
-build_image = "aws/codebuild/docker:17.09.0"
-
-build_compute_type = "BUILD_GENERAL1_SMALL"
-
-build_timeout = 60
-
-poll_source_changes = true
-
-privileged_mode = true
-
-image_repo_name = "terraform-aws-ecs-codepipeline"
-
-image_tag = "latest"
-
-webhook_enabled = false
-
-s3_bucket_force_destroy = true
-
-environment_variables = [
- {
- name = "APP_URL"
- value = "https://app.example.com"
- },
- {
- name = "COMPANY_NAME"
- value = "Cloud Posse"
- },
- {
- name = "TIME_ZONE"
- value = "America/Los_Angeles"
-
- }
-]
diff --git a/terraform/modules/terraform-aws-ecs-codepipeline/main.tf b/terraform/modules/terraform-aws-ecs-codepipeline/main.tf
deleted file mode 100644
index ee0cec9c9..000000000
--- a/terraform/modules/terraform-aws-ecs-codepipeline/main.tf
+++ /dev/null
@@ -1,110 +0,0 @@
-provider "aws" {
- region = var.region
-}
-
-module "label" {
- source = "git::https://github.com/cloudposse/terraform-null-label.git?ref=tags/0.16.0"
- namespace = var.namespace
- name = var.name
- stage = var.stage
- delimiter = var.delimiter
- attributes = var.attributes
- tags = var.tags
-}
-
-module "vpc" {
- source = "git::https://github.com/cloudposse/terraform-aws-vpc.git?ref=tags/0.8.1"
- namespace = var.namespace
- stage = var.stage
- name = var.name
- delimiter = var.delimiter
- attributes = var.attributes
- cidr_block = var.vpc_cidr_block
- tags = var.tags
-}
-
-module "subnets" {
- source = "git::https://github.com/cloudposse/terraform-aws-dynamic-subnets.git?ref=tags/0.16.1"
- availability_zones = var.availability_zones
- namespace = var.namespace
- stage = var.stage
- name = var.name
- attributes = var.attributes
- delimiter = var.delimiter
- vpc_id = module.vpc.vpc_id
- igw_id = module.vpc.igw_id
- cidr_block = module.vpc.vpc_cidr_block
- nat_gateway_enabled = true
- nat_instance_enabled = false
- tags = var.tags
-}
-
-resource "aws_ecs_cluster" "default" {
- name = module.label.id
- tags = module.label.tags
-}
-
-module "container_definition" {
- source = "git::https://github.com/cloudposse/terraform-aws-ecs-container-definition.git?ref=tags/0.21.0"
- container_name = var.container_name
- container_image = var.container_image
- container_memory = var.container_memory
- container_memory_reservation = var.container_memory_reservation
- container_cpu = var.container_cpu
- essential = var.container_essential
- readonly_root_filesystem = var.container_readonly_root_filesystem
- environment = var.container_environment
- port_mappings = var.container_port_mappings
-}
-
-module "ecs_alb_service_task" {
- source = "git::https://github.com/cloudposse/terraform-aws-ecs-alb-service-task.git?ref=master"
- namespace = var.namespace
- stage = var.stage
- name = var.name
- attributes = var.attributes
- delimiter = var.delimiter
- alb_security_group = module.vpc.vpc_default_security_group_id
- container_definition_json = module.container_definition.json
- ecs_cluster_arn = aws_ecs_cluster.default.arn
- launch_type = var.ecs_launch_type
- vpc_id = module.vpc.vpc_id
- security_group_ids = [module.vpc.vpc_default_security_group_id]
- subnet_ids = module.subnets.public_subnet_ids
- tags = var.tags
- ignore_changes_task_definition = var.ignore_changes_task_definition
- network_mode = var.network_mode
- assign_public_ip = var.assign_public_ip
- propagate_tags = var.propagate_tags
- deployment_minimum_healthy_percent = var.deployment_minimum_healthy_percent
- deployment_maximum_percent = var.deployment_maximum_percent
- deployment_controller_type = var.deployment_controller_type
- desired_count = var.desired_count
- task_memory = var.task_memory
- task_cpu = var.task_cpu
-}
-
-module "ecs_codepipeline" {
- source = "git::https://github.com/cloudposse/terraform-aws-ecs-codepipeline.git?ref=master"
- namespace = var.namespace
- stage = var.stage
- name = var.name
- region = var.region
- github_oauth_token = var.github_oauth_token
- github_webhooks_token = var.github_webhooks_token
- repo_owner = var.repo_owner
- repo_name = var.repo_name
- branch = var.branch
- build_image = var.build_image
- build_compute_type = var.build_compute_type
- build_timeout = var.build_timeout
- poll_source_changes = var.poll_source_changes
- privileged_mode = var.privileged_mode
- image_repo_name = var.image_repo_name
- image_tag = var.image_tag
- webhook_enabled = var.webhook_enabled
- s3_bucket_force_destroy = var.s3_bucket_force_destroy
- environment_variables = var.environment_variables
- ecs_cluster_name = aws_ecs_cluster.default.name
- service_name = module.ecs_alb_service_task.service_name
-}
diff --git a/terraform/modules/terraform-aws-ecs-codepipeline/outputs.tf b/terraform/modules/terraform-aws-ecs-codepipeline/outputs.tf
deleted file mode 100644
index 042eafd30..000000000
--- a/terraform/modules/terraform-aws-ecs-codepipeline/outputs.tf
+++ /dev/null
@@ -1,150 +0,0 @@
-output "public_subnet_cidrs" {
- value = module.subnets.public_subnet_cidrs
- description = "Public subnet CIDRs"
-}
-
-output "private_subnet_cidrs" {
- value = module.subnets.private_subnet_cidrs
- description = "Private subnet CIDRs"
-}
-
-output "vpc_cidr" {
- value = module.vpc.vpc_cidr_block
- description = "VPC ID"
-}
-
-output "container_definition_json" {
- value = module.container_definition.json
- description = "JSON encoded list of container definitions for use with other terraform resources such as aws_ecs_task_definition"
-}
-
-output "container_definition_json_map" {
- value = module.container_definition.json_map
- description = "JSON encoded container definitions for use with other terraform resources such as aws_ecs_task_definition"
-}
-
-output "ecs_cluster_id" {
- value = aws_ecs_cluster.default.id
- description = "ECS cluster ID"
-}
-
-output "ecs_cluster_arn" {
- value = aws_ecs_cluster.default.arn
- description = "ECS cluster ARN"
-}
-
-output "ecs_exec_role_policy_id" {
- description = "The ECS service role policy ID, in the form of `role_name:role_policy_name`"
- value = module.ecs_alb_service_task.ecs_exec_role_policy_id
-}
-
-output "ecs_exec_role_policy_name" {
- description = "ECS service role name"
- value = module.ecs_alb_service_task.ecs_exec_role_policy_name
-}
-
-output "service_name" {
- description = "ECS Service name"
- value = module.ecs_alb_service_task.service_name
-}
-
-output "service_role_arn" {
- description = "ECS Service role ARN"
- value = module.ecs_alb_service_task.service_role_arn
-}
-
-output "task_exec_role_name" {
- description = "ECS Task role name"
- value = module.ecs_alb_service_task.task_exec_role_name
-}
-
-output "task_exec_role_arn" {
- description = "ECS Task exec role ARN"
- value = module.ecs_alb_service_task.task_exec_role_arn
-}
-
-output "task_role_name" {
- description = "ECS Task role name"
- value = module.ecs_alb_service_task.task_role_name
-}
-
-output "task_role_arn" {
- description = "ECS Task role ARN"
- value = module.ecs_alb_service_task.task_role_arn
-}
-
-output "task_role_id" {
- description = "ECS Task role id"
- value = module.ecs_alb_service_task.task_role_id
-}
-
-output "service_security_group_id" {
- description = "Security Group ID of the ECS task"
- value = module.ecs_alb_service_task.service_security_group_id
-}
-
-output "task_definition_family" {
- description = "ECS task definition family"
- value = module.ecs_alb_service_task.task_definition_family
-}
-
-output "task_definition_revision" {
- description = "ECS task definition revision"
- value = module.ecs_alb_service_task.task_definition_revision
-}
-
-output "codebuild_project_name" {
- description = "CodeBuild project name"
- value = module.ecs_codepipeline.codebuild_project_name
-}
-
-output "codebuild_project_id" {
- description = "CodeBuild project ID"
- value = module.ecs_codepipeline.codebuild_project_id
-}
-
-output "codebuild_role_id" {
- description = "CodeBuild IAM Role ID"
- value = module.ecs_codepipeline.codebuild_role_id
-}
-
-output "codebuild_role_arn" {
- description = "CodeBuild IAM Role ARN"
- value = module.ecs_codepipeline.codebuild_role_arn
-}
-
-output "codebuild_cache_bucket_name" {
- description = "CodeBuild cache S3 bucket name"
- value = module.ecs_codepipeline.codebuild_cache_bucket_name
-}
-
-output "codebuild_cache_bucket_arn" {
- description = "CodeBuild cache S3 bucket ARN"
- value = module.ecs_codepipeline.codebuild_cache_bucket_arn
-}
-
-output "codebuild_badge_url" {
- description = "The URL of the build badge when badge_enabled is enabled"
- value = module.ecs_codepipeline.codebuild_badge_url
-}
-
-output "codepipeline_id" {
- description = "CodePipeline ID"
- value = module.ecs_codepipeline.codepipeline_id
-}
-
-output "codepipeline_arn" {
- description = "CodePipeline ARN"
- value = module.ecs_codepipeline.codepipeline_arn
-}
-
-output "webhook_id" {
- description = "The CodePipeline webhook's ID"
- value = module.ecs_codepipeline.webhook_id
-}
-
-output "webhook_url" {
- description = "The CodePipeline webhook's URL. POST events to this endpoint to trigger the target"
- value = module.ecs_codepipeline.webhook_url
- sensitive = true
-}
diff --git a/terraform/modules/terraform-aws-ecs-codepipeline/variables.tf b/terraform/modules/terraform-aws-ecs-codepipeline/variables.tf
deleted file mode 100644
index a3fa19eca..000000000
--- a/terraform/modules/terraform-aws-ecs-codepipeline/variables.tf
+++ /dev/null
@@ -1,237 +0,0 @@
-variable "region" {
- type = string
- description = "AWS Region for S3 bucket"
-}
-
-variable "availability_zones" {
- type = list(string)
- description = "List of availability zones"
-}
-
-variable "vpc_cidr_block" {
- type = string
- description = "VPC CIDR block"
-}
-
-variable "namespace" {
- type = string
- description = "Namespace (e.g. `eg` or `cp`)"
-}
-
-variable "stage" {
- type = string
- description = "Stage (e.g. `prod`, `dev`, `staging`)"
-}
-
-variable "name" {
- type = string
- description = "Name of the application"
-}
-
-variable "delimiter" {
- type = string
- default = "-"
- description = "Delimiter between `namespace`, `stage`, `name` and `attributes`"
-}
-
-variable "attributes" {
- type = list(string)
- description = "Additional attributes (_e.g._ \"1\")"
- default = []
-}
-
-variable "tags" {
- type = map(string)
- description = "Additional tags (_e.g._ { BusinessUnit : ABC })"
- default = {}
-}
-
-variable "ecs_launch_type" {
- type = string
- description = "ECS launch type"
-}
-
-variable "container_name" {
- type = string
- description = "The name of the container. Up to 255 characters ([a-z], [A-Z], [0-9], -, _ allowed)"
-}
-
-variable "container_image" {
- type = string
- description = "The image used to start the container. Images in the Docker Hub registry available by default"
-}
-
-variable "container_memory" {
- type = number
- description = "The amount of memory (in MiB) to allow the container to use. This is a hard limit, if the container attempts to exceed the container_memory, the container is killed. This field is optional for Fargate launch type and the total amount of container_memory of all containers in a task will need to be lower than the task memory value"
-}
-
-variable "container_memory_reservation" {
- type = number
- description = "The amount of memory (in MiB) to reserve for the container. If container needs to exceed this threshold, it can do so up to the set container_memory hard limit"
-}
-
-variable "container_port_mappings" {
- type = list(object({
- containerPort = number
- hostPort = number
- protocol = string
- }))
-
- description = "The port mappings to configure for the container. This is a list of maps. Each map should contain \"containerPort\", \"hostPort\", and \"protocol\", where \"protocol\" is one of \"tcp\" or \"udp\". If using containers in a task with the awsvpc or host network mode, the hostPort can either be left blank or set to the same value as the containerPort"
-}
-
-variable "container_cpu" {
- type = number
- description = "The number of cpu units to reserve for the container. This is optional for tasks using Fargate launch type and the total amount of container_cpu of all containers in a task will need to be lower than the task-level cpu value"
-}
-
-variable "container_essential" {
- type = bool
- description = "Determines whether all other containers in a task are stopped, if this container fails or stops for any reason. Due to how Terraform type casts booleans in json it is required to double quote this value"
-}
-
-variable "container_environment" {
- type = list(object({
- name = string
- value = string
- }))
- description = "The environment variables to pass to the container. This is a list of maps"
-}
-
-variable "container_readonly_root_filesystem" {
- type = bool
- description = "Determines whether a container is given read-only access to its root filesystem. Due to how Terraform type casts booleans in json it is required to double quote this value"
-}
-
-variable "network_mode" {
- type = string
- description = "The network mode to use for the task. This is required to be `awsvpc` for `FARGATE` `launch_type`"
-}
-
-variable "task_cpu" {
- type = number
- description = "The number of CPU units used by the task. If using `FARGATE` launch type `task_cpu` must match supported memory values (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#task_size)"
-}
-
-variable "task_memory" {
- type = number
- description = "The amount of memory (in MiB) used by the task. If using Fargate launch type `task_memory` must match supported cpu value (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#task_size)"
-}
-
-variable "desired_count" {
- type = number
- description = "The number of instances of the task definition to place and keep running"
-}
-
-variable "deployment_controller_type" {
- type = string
- description = "Type of deployment controller. Valid values are `CODE_DEPLOY` and `ECS`"
-}
-
-variable "deployment_maximum_percent" {
- type = number
- description = "The upper limit of the number of tasks (as a percentage of `desired_count`) that can be running in a service during a deployment"
-}
-
-variable "deployment_minimum_healthy_percent" {
- type = number
- description = "The lower limit (as a percentage of `desired_count`) of the number of tasks that must remain running and healthy in a service during a deployment"
-}
-
-variable "ignore_changes_task_definition" {
- type = bool
- description = "Whether to ignore changes in container definition and task definition in the ECS service"
-}
-
-variable "assign_public_ip" {
- type = bool
- description = "Assign a public IP address to the ENI (Fargate launch type only). Valid values are `true` or `false`. Default `false`"
-}
-
-variable "propagate_tags" {
- type = string
- description = "Specifies whether to propagate the tags from the task definition or the service to the tasks. The valid values are SERVICE and TASK_DEFINITION"
-}
-
-variable "github_oauth_token" {
- type = string
- description = "GitHub OAuth Token with permissions to access private repositories"
-}
-
-variable "github_webhooks_token" {
- type = string
- description = "GitHub OAuth Token with permissions to create webhooks. If not provided, can be sourced from the `GITHUB_TOKEN` environment variable"
-}
-
-variable "repo_owner" {
- type = string
- description = "GitHub Organization or Username"
-}
-
-variable "repo_name" {
- type = string
- description = "GitHub repository name of the application to be built and deployed to ECS"
-}
-
-variable "branch" {
- type = string
- description = "Branch of the GitHub repository, _e.g._ `master`"
-}
-
-variable "build_image" {
- type = string
- description = "Docker image for build environment, _e.g._ `aws/codebuild/docker:docker:17.09.0`"
-}
-
-variable "build_compute_type" {
- type = string
- description = "`CodeBuild` instance size. Possible values are: `BUILD_GENERAL1_SMALL` `BUILD_GENERAL1_MEDIUM` `BUILD_GENERAL1_LARGE`"
-}
-
-variable "build_timeout" {
- type = number
- description = "How long in minutes, from 5 to 480 (8 hours), for AWS CodeBuild to wait until timing out any related build that does not get marked as completed"
-}
-
-# https://www.terraform.io/docs/configuration/variables.html
-# It is recommended you avoid using boolean values and use explicit strings
-variable "poll_source_changes" {
- type = bool
- description = "Periodically check the location of your source content and run the pipeline if changes are detected"
-}
-
-variable "privileged_mode" {
- type = bool
- description = "If set to true, enables running the Docker daemon inside a Docker container on the CodeBuild instance. Used when building Docker images"
-}
-
-variable "image_repo_name" {
- type = string
- description = "ECR repository name to store the Docker image built by this module. Used as CodeBuild ENV variable when building Docker images. [For more info](http://docs.aws.amazon.com/codebuild/latest/userguide/sample-docker.html)"
-}
-
-variable "image_tag" {
- type = string
- description = "Docker image tag in the ECR repository, e.g. 'latest'. Used as CodeBuild ENV variable when building Docker images. [For more info](http://docs.aws.amazon.com/codebuild/latest/userguide/sample-docker.html)"
-}
-
-variable "environment_variables" {
- type = list(object(
- {
- name = string
- value = string
- }))
-
- description = "A list of maps, that contain both the key 'name' and the key 'value' to be used as additional environment variables for the build"
-}
-
-variable "webhook_enabled" {
- type = bool
- description = "Set to false to prevent the module from creating any webhook resources"
-}
-
-variable "s3_bucket_force_destroy" {
- type = bool
- description = "A boolean that indicates all objects should be deleted from the CodePipeline artifact store S3 bucket so that the bucket can be destroyed without error"
-}
diff --git a/terraform/modules/terraform-aws-ecs-codepipeline/versions.tf b/terraform/modules/terraform-aws-ecs-codepipeline/versions.tf
deleted file mode 100644
index 517cebf43..000000000
--- a/terraform/modules/terraform-aws-ecs-codepipeline/versions.tf
+++ /dev/null
@@ -1,11 +0,0 @@
-terraform {
- required_version = "~> 0.12.0"
-
- required_providers {
- aws = "~> 2.0"
- template = "~> 2.0"
- local = "~> 1.2"
- random = "~> 2.1"
- null = "~> 2.0"
- }
-}
diff --git a/terraform/modules/terraform-aws-elastic-beanstalk-environment/fixtures.us-east-2.tfvars b/terraform/modules/terraform-aws-elastic-beanstalk-environment/fixtures.us-east-2.tfvars
deleted file mode 100644
index 875795045..000000000
--- a/terraform/modules/terraform-aws-elastic-beanstalk-environment/fixtures.us-east-2.tfvars
+++ /dev/null
@@ -1,96 +0,0 @@
-region = "us-east-2"
-
-availability_zones = ["us-east-2a", "us-east-2b"]
-
-namespace = "eg"
-
-stage = "test"
-
-name = "notejam"
-
-description = "Test elastic-beanstalk-environment"
-
-tier = "WebServer"
-
-environment_type = "LoadBalanced"
-
-loadbalancer_type = "application"
-
-availability_zone_selector = "Any 2"
-
-instance_type = "t3.micro"
-
-autoscale_min = 1
-
-autoscale_max = 2
-
-wait_for_ready_timeout = "20m"
-
-
-force_destroy = true
-
-rolling_update_enabled = true
-
-rolling_update_type = "Health"
-
-updating_min_in_service = 0
-
-updating_max_batch = 1
-
-healthcheck_url = "/"
-
-application_port = 80
-
-root_volume_size = 8
-
-root_volume_type = "gp2"
-
-autoscale_measure_name = "CPUUtilization"
-
-autoscale_statistic = "Average"
-
-autoscale_unit = "Percent"
-
-autoscale_lower_bound = 20
-
-autoscale_lower_increment = -1
-
-autoscale_upper_bound = 80
-
-autoscale_upper_increment = 1
-
-elb_scheme = "public"
-
-// https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html
-// https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.docker
-solution_stack_name = "64bit Amazon Linux 2018.03 v2.9.5 running Python 2.7"
-
-version_label = ""
-
-dns_zone_id = "Z3SO0TKDDQ0RGG"
-
-// https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html
-additional_settings = [
- {
- namespace = "aws:elasticbeanstalk:environment:process:default"
- name = "StickinessEnabled"
- value = "false"
- },
- {
- namespace = "aws:elasticbeanstalk:managedactions"
- name = "ManagedActionsEnabled"
- value = "false"
- },
- {
- namespace = "aws:elasticbeanstalk:container:python"
- name = "WSGIPath"
- value = "notejam/wsgi.py"
- }
-]
-
-env_vars = {
- "DB_HOST" = "xxxxxxxxxxxxxx"
- "DB_USERNAME" = "yyyyyyyyyyyyy"
- "DB_PASSWORD" = "zzzzzzzzzzzzzzzzzzz"
- "ANOTHER_ENV_VAR" = "123456789"
-}
diff --git a/terraform/modules/terraform-aws-elastic-beanstalk-environment/main.tf b/terraform/modules/terraform-aws-elastic-beanstalk-environment/main.tf
deleted file mode 100644
index 53a025bd9..000000000
--- a/terraform/modules/terraform-aws-elastic-beanstalk-environment/main.tf
+++ /dev/null
@@ -1,99 +0,0 @@
-provider "aws" {
- region = var.region
-}
-
-module "vpc" {
- source = "git::https://github.com/cloudposse/terraform-aws-vpc.git?ref=tags/0.8.0"
- namespace = var.namespace
- stage = var.stage
- name = var.name
- attributes = var.attributes
- tags = var.tags
- delimiter = var.delimiter
- cidr_block = "172.16.0.0/16"
-}
-
-module "subnets" {
- source = "git::https://github.com/cloudposse/terraform-aws-dynamic-subnets.git?ref=tags/0.16.0"
- availability_zones = var.availability_zones
- namespace = var.namespace
- stage = var.stage
- name = var.name
- attributes = var.attributes
- tags = var.tags
- delimiter = var.delimiter
- vpc_id = module.vpc.vpc_id
- igw_id = module.vpc.igw_id
- cidr_block = module.vpc.vpc_cidr_block
- nat_gateway_enabled = true
- nat_instance_enabled = false
-}
-
-module "elastic_beanstalk_application" {
- source = "git::https://github.com/cloudposse/terraform-aws-elastic-beanstalk-application.git?ref=tags/0.3.0"
- namespace = var.namespace
- stage = var.stage
- name = var.name
- attributes = var.attributes
- tags = var.tags
- delimiter = var.delimiter
- description = "Test elastic_beanstalk_application"
-}
-
-module "elastic_beanstalk_environment" {
- source = "git::https://github.com/cloudposse/terraform-aws-elastic-beanstalk-environment.git?ref=tags/0.18.0"
- namespace = var.namespace
- stage = var.stage
- name = var.name
- attributes = var.attributes
- tags = var.tags
- delimiter = var.delimiter
- description = var.description
- region = var.region
- availability_zone_selector = var.availability_zone_selector
- dns_zone_id = var.dns_zone_id
-
- wait_for_ready_timeout = var.wait_for_ready_timeout
- elastic_beanstalk_application_name = module.elastic_beanstalk_application.elastic_beanstalk_application_name
- environment_type = var.environment_type
- loadbalancer_type = var.loadbalancer_type
- elb_scheme = var.elb_scheme
- tier = var.tier
- version_label = var.version_label
- force_destroy = var.force_destroy
-
- instance_type = var.instance_type
- root_volume_size = var.root_volume_size
- root_volume_type = var.root_volume_type
-
- autoscale_min = var.autoscale_min
- autoscale_max = var.autoscale_max
- autoscale_measure_name = var.autoscale_measure_name
- autoscale_statistic = var.autoscale_statistic
- autoscale_unit = var.autoscale_unit
- autoscale_lower_bound = var.autoscale_lower_bound
- autoscale_lower_increment = var.autoscale_lower_increment
- autoscale_upper_bound = var.autoscale_upper_bound
- autoscale_upper_increment = var.autoscale_upper_increment
-
- vpc_id = module.vpc.vpc_id
- loadbalancer_subnets = module.subnets.public_subnet_ids
- application_subnets = module.subnets.private_subnet_ids
- allowed_security_groups = [module.vpc.vpc_default_security_group_id]
-
- rolling_update_enabled = var.rolling_update_enabled
- rolling_update_type = var.rolling_update_type
- updating_min_in_service = var.updating_min_in_service
- updating_max_batch = var.updating_max_batch
-
- healthcheck_url = var.healthcheck_url
- application_port = var.application_port
-
- // https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html
- // https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.docker
- solution_stack_name = var.solution_stack_name
-
- additional_settings = var.additional_settings
- env_vars = var.env_vars
-}
-
diff --git a/terraform/modules/terraform-aws-elastic-beanstalk-environment/outputs.tf b/terraform/modules/terraform-aws-elastic-beanstalk-environment/outputs.tf
deleted file mode 100644
index 6119d3bb0..000000000
--- a/terraform/modules/terraform-aws-elastic-beanstalk-environment/outputs.tf
+++ /dev/null
@@ -1,105 +0,0 @@
-output "public_subnet_cidrs" {
- value = module.subnets.public_subnet_cidrs
- description = "Public subnet CIDRs"
-}
-
-output "private_subnet_cidrs" {
- value = module.subnets.private_subnet_cidrs
- description = "Private subnet CIDRs"
-}
-
-output "vpc_cidr" {
- value = module.vpc.vpc_cidr_block
- description = "VPC ID"
-}
-
-output "elastic_beanstalk_application_name" {
- value = module.elastic_beanstalk_application.elastic_beanstalk_application_name
- description = "Elastic Beanstalk Application name"
-}
-
-output "elastic_beanstalk_environment_hostname" {
- value = module.elastic_beanstalk_environment.hostname
- description = "DNS hostname"
-}
-
-output "elastic_beanstalk_environment_id" {
- description = "ID of the Elastic Beanstalk environment"
- value = module.elastic_beanstalk_environment.id
-}
-
-output "elastic_beanstalk_environment_name" {
- value = module.elastic_beanstalk_environment.name
- description = "Name"
-}
-
-output "elastic_beanstalk_environment_security_group_id" {
- value = module.elastic_beanstalk_environment.security_group_id
- description = "Security group id"
-}
-
-output "elastic_beanstalk_environment_elb_zone_id" {
- value = module.elastic_beanstalk_environment.elb_zone_id
- description = "ELB zone id"
-}
-
-output "elastic_beanstalk_environment_ec2_instance_profile_role_name" {
- value = module.elastic_beanstalk_environment.ec2_instance_profile_role_name
- description = "Instance IAM role name"
-}
-
-output "elastic_beanstalk_environment_tier" {
- description = "The environment tier"
- value = module.elastic_beanstalk_environment.tier
-}
-
-output "elastic_beanstalk_environment_application" {
- description = "The Elastic Beanstalk Application specified for this environment"
- value = module.elastic_beanstalk_environment.application
-}
-
-output "elastic_beanstalk_environment_setting" {
- description = "Settings specifically set for this environment"
- value = module.elastic_beanstalk_environment.setting
-}
-
-output "elastic_beanstalk_environment_all_settings" {
- description = "List of all option settings configured in the environment. These are a combination of default settings and their overrides from setting in the configuration"
- value = module.elastic_beanstalk_environment.all_settings
-}
-
-output "elastic_beanstalk_environment_endpoint" {
- description = "Fully qualified DNS name for the environment"
- value = module.elastic_beanstalk_environment.endpoint
-}
-
-output "elastic_beanstalk_environment_autoscaling_groups" {
- description = "The autoscaling groups used by this environment"
- value = module.elastic_beanstalk_environment.autoscaling_groups
-}
-
-output "elastic_beanstalk_environment_instances" {
- description = "Instances used by this environment"
- value = module.elastic_beanstalk_environment.instances
-}
-
-output "elastic_beanstalk_environment_launch_configurations" {
- description = "Launch configurations in use by this environment"
- value = module.elastic_beanstalk_environment.launch_configurations
-}
-
-output "elastic_beanstalk_environment_load_balancers" {
- description = "Elastic Load Balancers in use by this environment"
- value = module.elastic_beanstalk_environment.load_balancers
-}
-
-output "elastic_beanstalk_environment_queues" {
- description = "SQS queues in use by this environment"
- value = module.elastic_beanstalk_environment.queues
-}
-
-output "elastic_beanstalk_environment_triggers" {
- description = "Autoscaling triggers in use by this environment"
- value = module.elastic_beanstalk_environment.triggers
-}
-
diff --git a/terraform/modules/terraform-aws-elastic-beanstalk-environment/variables.tf b/terraform/modules/terraform-aws-elastic-beanstalk-environment/variables.tf
deleted file mode 100644
index 12a0b345e..000000000
--- a/terraform/modules/terraform-aws-elastic-beanstalk-environment/variables.tf
+++ /dev/null
@@ -1,204 +0,0 @@
-variable "region" {
- type = string
- description = "AWS region"
-}
-
-variable "availability_zones" {
- type = list(string)
- description = "List of availability zones"
-}
-
-variable "namespace" {
- type = string
- description = "Namespace, which could be your organization name, e.g. 'eg' or 'cp'"
-}
-
-variable "stage" {
- type = string
- description = "Stage, e.g. 'prod', 'staging', 'dev', or 'test'"
-}
-
-variable "name" {
- type = string
- description = "Solution name, e.g. 'app' or 'cluster'"
-}
-
-variable "delimiter" {
- type = string
- default = "-"
- description = "Delimiter to be used between `name`, `namespace`, `stage`, etc."
-}
-
-variable "attributes" {
- type = list(string)
- default = []
- description = "Additional attributes (e.g. `1`)"
-}
-
-variable "tags" {
- type = map(string)
- default = {}
- description = "Additional tags (e.g. `map('BusinessUnit`,`XYZ`)"
-}
-
-variable "description" {
- type = string
- description = "Short description of the Environment"
-}
-
-variable "environment_type" {
- type = string
- description = "Environment type, e.g. 'LoadBalanced' or 'SingleInstance'. If setting to 'SingleInstance', `rolling_update_type` must be set to 'Time', `updating_min_in_service` must be set to 0, and `loadbalancer_subnets` will be unused (it applies to the ELB, which does not exist in SingleInstance environments)"
-}
-
-variable "loadbalancer_type" {
- type = string
- description = "Load Balancer type, e.g. 'application' or 'classic'"
-}
-
-variable "dns_zone_id" {
- type = string
- description = "Route53 parent zone ID. The module will create sub-domain DNS record in the parent zone for the EB environment"
-}
-
-variable "availability_zone_selector" {
- type = string
- description = "Availability Zone selector"
-}
-
-variable "instance_type" {
- type = string
- description = "Instances type"
-}
-
-variable "autoscale_min" {
- type = number
- description = "Minumum instances to launch"
-}
-
-variable "autoscale_max" {
- type = number
- description = "Maximum instances to launch"
-}
-
-variable "solution_stack_name" {
- type = string
- description = "Elastic Beanstalk stack, e.g. Docker, Go, Node, Java, IIS. For more info, see https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html"
-}
-
-variable "wait_for_ready_timeout" {
- type = string
- description = "The maximum duration to wait for the Elastic Beanstalk Environment to be in a ready state before timing out"
-}
-
-variable "tier" {
- type = string
- description = "Elastic Beanstalk Environment tier, e.g. 'WebServer' or 'Worker'"
-}
-
-variable "version_label" {
- type = string
- description = "Elastic Beanstalk Application version to deploy"
-}
-
-variable "force_destroy" {
- type = bool
- description = "Force destroy the S3 bucket for load balancer logs"
-}
-
-variable "rolling_update_enabled" {
- type = bool
- description = "Whether to enable rolling update"
-}
-
-variable "rolling_update_type" {
- type = string
- description = "`Health` or `Immutable`. Set it to `Immutable` to apply the configuration change to a fresh group of instances"
-}
-
-variable "updating_min_in_service" {
- type = number
- description = "Minimum number of instances in service during update"
-}
-
-variable "updating_max_batch" {
- type = number
- description = "Maximum number of instances to update at once"
-}
-
-variable "healthcheck_url" {
- type = string
- description = "Application Health Check URL. Elastic Beanstalk will call this URL to check the health of the application running on EC2 instances"
-}
-
-variable "application_port" {
- type = number
- description = "Port application is listening on"
-}
-
-variable "root_volume_size" {
- type = number
- description = "The size of the EBS root volume"
-}
-
-variable "root_volume_type" {
- type = string
- description = "The type of the EBS root volume"
-}
-
-variable "autoscale_measure_name" {
- type = string
- description = "Metric used for your Auto Scaling trigger"
-}
-
-variable "autoscale_statistic" {
- type = string
- description = "Statistic the trigger should use, such as Average"
-}
-
-variable "autoscale_unit" {
- type = string
- description = "Unit for the trigger measurement, such as Bytes"
-}
-
-variable "autoscale_lower_bound" {
- type = number
- description = "Minimum level of autoscale metric to remove an instance"
-}
-
-variable "autoscale_lower_increment" {
- type = number
- description = "How many Amazon EC2 instances to remove when performing a scaling activity."
-}
-
-variable "autoscale_upper_bound" {
- type = number
- description = "Maximum level of autoscale metric to add an instance"
-}
-
-variable "autoscale_upper_increment" {
- type = number
- description = "How many Amazon EC2 instances to add when performing a scaling activity"
-}
-
-variable "elb_scheme" {
- type = string
- description = "Specify `internal` if you want to create an internal load balancer in your Amazon VPC so that your Elastic Beanstalk application cannot be accessed from outside your Amazon VPC"
-}
-
-variable "additional_settings" {
- type = list(object({
- namespace = string
- name = string
- value = string
- }))
-
- description = "Additional Elastic Beanstalk setttings. For full list of options, see https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html"
- default = []
-}
-
-variable "env_vars" {
- type = map(string)
- default = {}
- description = "Map of custom ENV variables to be provided to the application running on Elastic Beanstalk, e.g. env_vars = { DB_USER = 'admin' DB_PASS = 'xxxxxx' }"
-}
diff --git a/terraform/modules/terraform-aws-elastic-beanstalk-environment/versions.tf b/terraform/modules/terraform-aws-elastic-beanstalk-environment/versions.tf
deleted file mode 100644
index 4c7776f92..000000000
--- a/terraform/modules/terraform-aws-elastic-beanstalk-environment/versions.tf
+++ /dev/null
@@ -1,8 +0,0 @@
-terraform {
- required_version = "~> 0.12.0"
-
- required_providers {
- aws = "~> 2.0"
- null = "~> 2.0"
- }
-}
diff --git a/yii/README.rst b/yii/README.rst
deleted file mode 100644
index 5220e1906..000000000
--- a/yii/README.rst
+++ /dev/null
@@ -1,91 +0,0 @@
-************
-Notejam: Yii
-************
-
-Notejam application implemented using `Yii `_ framework.
-
-Yii version: 2.0.6
-
-PHP version required: 5.4+
-
-==========================
-Installation and launching
-==========================
-
------
-Clone
------
-
-Clone the repo:
-
-.. code-block:: bash
-
- $ git clone https://github.com/komarserjio/notejam YOUR_PROJECT_DIR/
-
--------
-Install
--------
-
-Install `composer `_
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/yii/notejam
- $ curl -s https://getcomposer.org/installer | php
- $ php composer.phar global require "fxp/composer-asset-plugin:~1.1.0"
-
-Install dependencies
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/yii/notejam
- $ php composer.phar install
-
-Create database schema
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/yii/notejam
- $ ./yii migrate
-
-
-------
-Launch
-------
-
-Start built-in php web server:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/yii/notejam/web
- $ ./yii serve --port=8000
-
-Go to http://localhost:8000 in your browser.
-
----------
-Run tests
----------
-
-Run functional tests:
-
-.. code-block:: bash
-
- $ cd YOUR_PROJECT_DIR/yii/notejam/
- $ ./vendor/bin/codecept build
- $ ./vendor/bin/codecept run functional
-
-
-============
-Contribution
-============
-Do you have php/yii experience? Help the app to follow PHP and Yii best practices.
-
-Please send your pull requests in the ``master`` branch.
-Always prepend your commits with framework name:
-
-.. code-block:: bash
-
- Yii: Implemented sign in functionality
-
-Read `contribution guide `_ for details.
-
diff --git a/yii/notejam/.gitignore b/yii/notejam/.gitignore
deleted file mode 100644
index 45bf7bf41..000000000
--- a/yii/notejam/.gitignore
+++ /dev/null
@@ -1,27 +0,0 @@
-# phpstorm project files
-.idea
-
-# netbeans project files
-nbproject
-
-# zend studio for eclipse project files
-.buildpath
-.project
-.settings
-
-# windows thumbnail cache
-Thumbs.db
-
-# composer vendor dir
-/vendor
-
-# composer itself is not needed
-composer.phar
-
-# Mac DS_Store Files
-.DS_Store
-
-# phpunit itself is not needed
-phpunit.phar
-# local phpunit config
-/phpunit.xml
diff --git a/yii/notejam/assets/AppAsset.php b/yii/notejam/assets/AppAsset.php
deleted file mode 100644
index 3ba8e75e6..000000000
--- a/yii/notejam/assets/AppAsset.php
+++ /dev/null
@@ -1,19 +0,0 @@
-=5.4.0",
- "yiisoft/yii2": "~2.0.6",
- "yiisoft/yii2-bootstrap": "*",
- "yiisoft/yii2-swiftmailer": "*"
- },
- "require-dev": {
- "yiisoft/yii2-codeception": "*",
- "yiisoft/yii2-debug": "*",
- "yiisoft/yii2-gii": "*",
- "codeception/codeception": "*",
- "codeception/specify": "*",
- "codeception/verify": "*"
- },
- "scripts": {
- "post-create-project-cmd": [
- "yii\\composer\\Installer::postCreateProject"
- ]
- },
- "config": {
- "process-timeout": 1800
- },
- "extra": {
- "yii\\composer\\Installer::postCreateProject": {
- "setPermission": [
- {
- "runtime": "0777",
- "web/assets": "0777",
- "yii": "0755"
- }
- ],
- "generateCookieValidationKey": [
- "config/web.php"
- ]
- },
- "asset-installer-paths": {
- "npm-asset-library": "vendor/npm",
- "bower-asset-library": "vendor/bower"
- }
- }
-}
diff --git a/yii/notejam/composer.lock b/yii/notejam/composer.lock
deleted file mode 100644
index c4eac2268..000000000
--- a/yii/notejam/composer.lock
+++ /dev/null
@@ -1,2640 +0,0 @@
-{
- "_readme": [
- "This file locks the dependencies of your project to a known state",
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
- "This file is @generated automatically"
- ],
- "hash": "c9cc6d5dab3dfe8202dd47532a0f4657",
- "content-hash": "6b946b86e3461613931cc36c93837a0e",
- "packages": [
- {
- "name": "bower-asset/bootstrap",
- "version": "v3.3.5",
- "source": {
- "type": "git",
- "url": "https://github.com/twbs/bootstrap.git",
- "reference": "16b48259a62f576e52c903c476bd42b90ab22482"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/twbs/bootstrap/zipball/16b48259a62f576e52c903c476bd42b90ab22482",
- "reference": "16b48259a62f576e52c903c476bd42b90ab22482",
- "shasum": ""
- },
- "require": {
- "bower-asset/jquery": ">=1.9.1"
- },
- "type": "bower-asset-library",
- "extra": {
- "bower-asset-main": [
- "less/bootstrap.less",
- "dist/js/bootstrap.js"
- ],
- "bower-asset-ignore": [
- "/.*",
- "_config.yml",
- "CNAME",
- "composer.json",
- "CONTRIBUTING.md",
- "docs",
- "js/tests",
- "test-infra"
- ]
- },
- "license": [
- "MIT"
- ],
- "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
- "keywords": [
- "css",
- "framework",
- "front-end",
- "js",
- "less",
- "mobile-first",
- "responsive",
- "web"
- ]
- },
- {
- "name": "bower-asset/jquery",
- "version": "2.1.4",
- "source": {
- "type": "git",
- "url": "https://github.com/jquery/jquery.git",
- "reference": "7751e69b615c6eca6f783a81e292a55725af6b85"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/jquery/jquery/zipball/7751e69b615c6eca6f783a81e292a55725af6b85",
- "reference": "7751e69b615c6eca6f783a81e292a55725af6b85",
- "shasum": ""
- },
- "require-dev": {
- "bower-asset/qunit": "1.14.0",
- "bower-asset/requirejs": "2.1.10",
- "bower-asset/sinon": "1.8.1",
- "bower-asset/sizzle": "2.1.1-patch2"
- },
- "type": "bower-asset-library",
- "extra": {
- "bower-asset-main": "dist/jquery.js",
- "bower-asset-ignore": [
- "**/.*",
- "build",
- "dist/cdn",
- "speed",
- "test",
- "*.md",
- "AUTHORS.txt",
- "Gruntfile.js",
- "package.json"
- ]
- },
- "license": [
- "MIT"
- ],
- "keywords": [
- "javascript",
- "jquery",
- "library"
- ]
- },
- {
- "name": "bower-asset/jquery.inputmask",
- "version": "3.2.3",
- "source": {
- "type": "git",
- "url": "https://github.com/RobinHerbots/jquery.inputmask.git",
- "reference": "85b94d8c8158d610b148317608bf67b678b40659"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/RobinHerbots/jquery.inputmask/zipball/85b94d8c8158d610b148317608bf67b678b40659",
- "reference": "85b94d8c8158d610b148317608bf67b678b40659",
- "shasum": ""
- },
- "require": {
- "bower-asset/jquery": ">=1.7"
- },
- "type": "bower-asset-library",
- "extra": {
- "bower-asset-main": [
- "./dist/inputmask/inputmask.js"
- ],
- "bower-asset-ignore": [
- "*",
- "!dist/*",
- "!extra/*"
- ]
- },
- "license": [
- "http://opensource.org/licenses/mit-license.php"
- ],
- "description": "jquery.inputmask is a jquery plugin which create an input mask.",
- "keywords": [
- "form",
- "input",
- "inputmask",
- "jquery",
- "mask",
- "plugins"
- ]
- },
- {
- "name": "bower-asset/punycode",
- "version": "v1.3.2",
- "source": {
- "type": "git",
- "url": "https://github.com/bestiejs/punycode.js.git",
- "reference": "38c8d3131a82567bfef18da09f7f4db68c84f8a3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/bestiejs/punycode.js/zipball/38c8d3131a82567bfef18da09f7f4db68c84f8a3",
- "reference": "38c8d3131a82567bfef18da09f7f4db68c84f8a3",
- "shasum": ""
- },
- "type": "bower-asset-library",
- "extra": {
- "bower-asset-main": "punycode.js",
- "bower-asset-ignore": [
- "coverage",
- "tests",
- ".*",
- "component.json",
- "Gruntfile.js",
- "node_modules",
- "package.json"
- ]
- }
- },
- {
- "name": "bower-asset/yii2-pjax",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/yiisoft/jquery-pjax.git",
- "reference": "6818718408086db6bdcf33649cecb86b6b4f9b67"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/yiisoft/jquery-pjax/zipball/6818718408086db6bdcf33649cecb86b6b4f9b67",
- "reference": "6818718408086db6bdcf33649cecb86b6b4f9b67",
- "shasum": ""
- },
- "require": {
- "bower-asset/jquery": ">=1.8"
- },
- "type": "bower-asset-library",
- "extra": {
- "bower-asset-main": "./jquery.pjax.js",
- "bower-asset-ignore": [
- ".travis.yml",
- "Gemfile",
- "Gemfile.lock",
- "vendor/",
- "script/",
- "test/"
- ],
- "branch-alias": {
- "dev-master": "2.0.3-dev"
- }
- },
- "license": [
- "MIT"
- ]
- },
- {
- "name": "cebe/markdown",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/cebe/markdown.git",
- "reference": "e14d3da8f84eefa3792fd22b5b5ecba9c98d2e18"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/cebe/markdown/zipball/e14d3da8f84eefa3792fd22b5b5ecba9c98d2e18",
- "reference": "e14d3da8f84eefa3792fd22b5b5ecba9c98d2e18",
- "shasum": ""
- },
- "require": {
- "lib-pcre": "*",
- "php": ">=5.4.0"
- },
- "require-dev": {
- "cebe/indent": "*",
- "facebook/xhprof": "*@dev",
- "phpunit/phpunit": "4.1.*"
- },
- "bin": [
- "bin/markdown"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "cebe\\markdown\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Carsten Brandt",
- "email": "mail@cebe.cc",
- "homepage": "http://cebe.cc/",
- "role": "Creator"
- }
- ],
- "description": "A super fast, highly extensible markdown parser for PHP",
- "homepage": "https://github.com/cebe/markdown#readme",
- "keywords": [
- "extensible",
- "fast",
- "gfm",
- "markdown",
- "markdown-extra"
- ],
- "time": "2015-03-20 11:07:08"
- },
- {
- "name": "ezyang/htmlpurifier",
- "version": "v4.6.0",
- "source": {
- "type": "git",
- "url": "https://github.com/ezyang/htmlpurifier.git",
- "reference": "6f389f0f25b90d0b495308efcfa073981177f0fd"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/6f389f0f25b90d0b495308efcfa073981177f0fd",
- "reference": "6f389f0f25b90d0b495308efcfa073981177f0fd",
- "shasum": ""
- },
- "require": {
- "php": ">=5.2"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "HTMLPurifier": "library/"
- },
- "files": [
- "library/HTMLPurifier.composer.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "LGPL"
- ],
- "authors": [
- {
- "name": "Edward Z. Yang",
- "email": "admin@htmlpurifier.org",
- "homepage": "http://ezyang.com",
- "role": "Developer"
- }
- ],
- "description": "Standards compliant HTML filter written in PHP",
- "homepage": "http://htmlpurifier.org/",
- "keywords": [
- "html"
- ],
- "time": "2013-11-30 08:25:19"
- },
- {
- "name": "swiftmailer/swiftmailer",
- "version": "5.x-dev",
- "source": {
- "type": "git",
- "url": "https://github.com/swiftmailer/swiftmailer.git",
- "reference": "6522539daf0a7bdada1cc2dccb7ec37dc0712136"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/6522539daf0a7bdada1cc2dccb7ec37dc0712136",
- "reference": "6522539daf0a7bdada1cc2dccb7ec37dc0712136",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "mockery/mockery": "~0.9.1,<0.9.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.4-dev"
- }
- },
- "autoload": {
- "files": [
- "lib/swift_required.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Chris Corbyn"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Swiftmailer, free feature-rich PHP mailer",
- "homepage": "http://swiftmailer.org",
- "keywords": [
- "email",
- "mail",
- "mailer"
- ],
- "time": "2015-09-04 05:47:20"
- },
- {
- "name": "yiisoft/yii2",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/yiisoft/yii2-framework.git",
- "reference": "7206eaf089f06aa462e96e1939eb53d0eb7312fb"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/7206eaf089f06aa462e96e1939eb53d0eb7312fb",
- "reference": "7206eaf089f06aa462e96e1939eb53d0eb7312fb",
- "shasum": ""
- },
- "require": {
- "bower-asset/jquery": "2.1.*@stable | 1.11.*@stable",
- "bower-asset/jquery.inputmask": "~3.2.2",
- "bower-asset/punycode": "1.3.*",
- "bower-asset/yii2-pjax": ">=2.0.1",
- "cebe/markdown": "~1.0.0 | ~1.1.0",
- "ext-ctype": "*",
- "ext-mbstring": "*",
- "ezyang/htmlpurifier": "4.6.*",
- "lib-pcre": "*",
- "php": ">=5.4.0",
- "yiisoft/yii2-composer": "*"
- },
- "bin": [
- "yii"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "yii\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Qiang Xue",
- "email": "qiang.xue@gmail.com",
- "homepage": "http://www.yiiframework.com/",
- "role": "Founder and project lead"
- },
- {
- "name": "Alexander Makarov",
- "email": "sam@rmcreative.ru",
- "homepage": "http://rmcreative.ru/",
- "role": "Core framework development"
- },
- {
- "name": "Maurizio Domba",
- "homepage": "http://mdomba.info/",
- "role": "Core framework development"
- },
- {
- "name": "Carsten Brandt",
- "email": "mail@cebe.cc",
- "homepage": "http://cebe.cc/",
- "role": "Core framework development"
- },
- {
- "name": "Timur Ruziev",
- "email": "resurtm@gmail.com",
- "homepage": "http://resurtm.com/",
- "role": "Core framework development"
- },
- {
- "name": "Paul Klimov",
- "email": "klimov.paul@gmail.com",
- "role": "Core framework development"
- }
- ],
- "description": "Yii PHP Framework Version 2",
- "homepage": "http://www.yiiframework.com/",
- "keywords": [
- "framework",
- "yii2"
- ],
- "time": "2015-11-11 18:14:23"
- },
- {
- "name": "yiisoft/yii2-bootstrap",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/yiisoft/yii2-bootstrap.git",
- "reference": "09a5bfe72c0141ad26281848f1ae9c3f42541f20"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/yiisoft/yii2-bootstrap/zipball/09a5bfe72c0141ad26281848f1ae9c3f42541f20",
- "reference": "09a5bfe72c0141ad26281848f1ae9c3f42541f20",
- "shasum": ""
- },
- "require": {
- "bower-asset/bootstrap": "3.3.* | 3.2.* | 3.1.*",
- "yiisoft/yii2": ">=2.0.6"
- },
- "type": "yii2-extension",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- },
- "asset-installer-paths": {
- "npm-asset-library": "vendor/npm",
- "bower-asset-library": "vendor/bower"
- }
- },
- "autoload": {
- "psr-4": {
- "yii\\bootstrap\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Qiang Xue",
- "email": "qiang.xue@gmail.com"
- }
- ],
- "description": "The Twitter Bootstrap extension for the Yii framework",
- "keywords": [
- "bootstrap",
- "yii2"
- ],
- "time": "2015-10-25 21:18:48"
- },
- {
- "name": "yiisoft/yii2-composer",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/yiisoft/yii2-composer.git",
- "reference": "87cd1f2e0dd454a837607de612b1057840effe8b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/yiisoft/yii2-composer/zipball/87cd1f2e0dd454a837607de612b1057840effe8b",
- "reference": "87cd1f2e0dd454a837607de612b1057840effe8b",
- "shasum": ""
- },
- "require": {
- "composer-plugin-api": "^1.0"
- },
- "type": "composer-plugin",
- "extra": {
- "class": "yii\\composer\\Plugin",
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "yii\\composer\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Qiang Xue",
- "email": "qiang.xue@gmail.com"
- }
- ],
- "description": "The composer plugin for Yii extension installer",
- "keywords": [
- "composer",
- "extension installer",
- "yii2"
- ],
- "time": "2015-09-25 10:48:24"
- },
- {
- "name": "yiisoft/yii2-swiftmailer",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/yiisoft/yii2-swiftmailer.git",
- "reference": "745a045c905cc595ca5698f5cd78fd7a8944c706"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/yiisoft/yii2-swiftmailer/zipball/745a045c905cc595ca5698f5cd78fd7a8944c706",
- "reference": "745a045c905cc595ca5698f5cd78fd7a8944c706",
- "shasum": ""
- },
- "require": {
- "swiftmailer/swiftmailer": "~5.0",
- "yiisoft/yii2": ">=2.0.4"
- },
- "type": "yii2-extension",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "yii\\swiftmailer\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Paul Klimov",
- "email": "klimov.paul@gmail.com"
- }
- ],
- "description": "The SwiftMailer integration for the Yii framework",
- "keywords": [
- "email",
- "mail",
- "mailer",
- "swift",
- "swiftmailer",
- "yii2"
- ],
- "time": "2015-09-29 11:01:52"
- }
- ],
- "packages-dev": [
- {
- "name": "bower-asset/typeahead.js",
- "version": "v0.10.5",
- "source": {
- "type": "git",
- "url": "https://github.com/twitter/typeahead.js.git",
- "reference": "5f198b87d1af845da502ea9df93a5e84801ce742"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/twitter/typeahead.js/zipball/5f198b87d1af845da502ea9df93a5e84801ce742",
- "reference": "5f198b87d1af845da502ea9df93a5e84801ce742",
- "shasum": ""
- },
- "require": {
- "bower-asset/jquery": ">=1.7"
- },
- "require-dev": {
- "bower-asset/jasmine-ajax": "~1.3.1",
- "bower-asset/jasmine-jquery": "~1.5.2",
- "bower-asset/jquery": "~1.7"
- },
- "type": "bower-asset-library",
- "extra": {
- "bower-asset-main": "dist/typeahead.bundle.js"
- }
- },
- {
- "name": "codeception/codeception",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/Codeception/Codeception.git",
- "reference": "793c671dd325a7d16b8584b4bef9bad0e54fc765"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Codeception/Codeception/zipball/793c671dd325a7d16b8584b4bef9bad0e54fc765",
- "reference": "793c671dd325a7d16b8584b4bef9bad0e54fc765",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "ext-mbstring": "*",
- "facebook/webdriver": ">=1.0.1",
- "guzzlehttp/guzzle": ">=4.1.4 <7.0",
- "guzzlehttp/psr7": "~1.0",
- "php": ">=5.4.0",
- "phpunit/phpunit": "~4.8.0",
- "symfony/browser-kit": "~2.4",
- "symfony/console": "~2.4",
- "symfony/css-selector": "~2.4",
- "symfony/dom-crawler": "~2.4,!=2.4.5",
- "symfony/event-dispatcher": "~2.4",
- "symfony/finder": "~2.4",
- "symfony/yaml": "~2.4"
- },
- "require-dev": {
- "codeception/specify": "~0.3",
- "facebook/php-sdk-v4": "~4.0",
- "flow/jsonpath": "~0.2",
- "monolog/monolog": "~1.8",
- "pda/pheanstalk": "~2.0",
- "videlalvaro/php-amqplib": "~2.4"
- },
- "suggest": {
- "codeception/phpbuiltinserver": "Extension to start and stop PHP built-in web server for your tests",
- "codeception/specify": "BDD-style code blocks",
- "codeception/verify": "BDD-style assertions",
- "monolog/monolog": "Log test steps",
- "phpseclib/phpseclib": "Extension required to use the SFTP option in the FTP Module."
- },
- "bin": [
- "codecept"
- ],
- "type": "library",
- "extra": {
- "branch-alias": []
- },
- "autoload": {
- "psr-4": {
- "Codeception\\": "src\\Codeception",
- "Codeception\\Extension\\": "ext"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Bodnarchuk",
- "email": "davert@mail.ua",
- "homepage": "http://codegyre.com"
- }
- ],
- "description": "BDD-style testing framework",
- "homepage": "http://codeception.com/",
- "keywords": [
- "BDD",
- "TDD",
- "acceptance testing",
- "functional testing",
- "unit testing"
- ],
- "time": "2015-10-01 02:45:16"
- },
- {
- "name": "codeception/specify",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/Codeception/Specify.git",
- "reference": "0809e0209e642fb157205b7bd506be8593f58550"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Codeception/Specify/zipball/0809e0209e642fb157205b7bd506be8593f58550",
- "reference": "0809e0209e642fb157205b7bd506be8593f58550",
- "shasum": ""
- },
- "require": {
- "myclabs/deep-copy": "~1.1",
- "php": ">=5.4.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "Codeception\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "authors": [
- {
- "name": "Michael Bodnarchuk",
- "email": "davert.php@mailican.com"
- }
- ],
- "description": "BDD code blocks for PHPUnit and Codeception",
- "time": "2015-09-26 09:13:20"
- },
- {
- "name": "codeception/verify",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/Codeception/Verify.git",
- "reference": "01d46c61c44b87e7902abb6c106416dfb874c8f7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Codeception/Verify/zipball/01d46c61c44b87e7902abb6c106416dfb874c8f7",
- "reference": "01d46c61c44b87e7902abb6c106416dfb874c8f7",
- "shasum": ""
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "type": "library",
- "autoload": {
- "files": [
- "src/Codeception/function.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "authors": [
- {
- "name": "Michael Bodnarchuk",
- "email": "davert.php@mailican.com"
- }
- ],
- "description": "BDD assertion library for PHPUnit",
- "time": "2015-09-26 09:24:02"
- },
- {
- "name": "doctrine/instantiator",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/instantiator.git",
- "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
- "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3,<8.0-DEV"
- },
- "require-dev": {
- "athletic/athletic": "~0.1.8",
- "ext-pdo": "*",
- "ext-phar": "*",
- "phpunit/phpunit": "~4.0",
- "squizlabs/php_codesniffer": "~2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com",
- "homepage": "http://ocramius.github.com/"
- }
- ],
- "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
- "homepage": "https://github.com/doctrine/instantiator",
- "keywords": [
- "constructor",
- "instantiate"
- ],
- "time": "2015-06-14 21:17:01"
- },
- {
- "name": "facebook/webdriver",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/facebook/php-webdriver.git",
- "reference": "575600dfcfebad49fd0fc59d781b0696462a1f4e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/575600dfcfebad49fd0fc59d781b0696462a1f4e",
- "reference": "575600dfcfebad49fd0fc59d781b0696462a1f4e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.19"
- },
- "require-dev": {
- "phpdocumentor/phpdocumentor": "2.*",
- "phpunit/phpunit": "3.7.*"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "lib/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "description": "A php client for WebDriver",
- "homepage": "https://github.com/facebook/php-webdriver",
- "keywords": [
- "facebook",
- "php",
- "selenium",
- "webdriver"
- ],
- "time": "2015-06-09 17:09:16"
- },
- {
- "name": "guzzlehttp/guzzle",
- "version": "5.3.x-dev",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/guzzle.git",
- "reference": "8e6f5732242fe833eb5fd553648924a200e50492"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/8e6f5732242fe833eb5fd553648924a200e50492",
- "reference": "8e6f5732242fe833eb5fd553648924a200e50492",
- "shasum": ""
- },
- "require": {
- "guzzlehttp/ringphp": "^1.1",
- "php": ">=5.4.0"
- },
- "require-dev": {
- "ext-curl": "*",
- "phpunit/phpunit": "^4.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients",
- "homepage": "http://guzzlephp.org/",
- "keywords": [
- "client",
- "curl",
- "framework",
- "http",
- "http client",
- "rest",
- "web service"
- ],
- "time": "2015-08-15 20:00:28"
- },
- {
- "name": "guzzlehttp/psr7",
- "version": "1.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/psr7.git",
- "reference": "4d0bdbe1206df7440219ce14c972aa57cc5e4982"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/4d0bdbe1206df7440219ce14c972aa57cc5e4982",
- "reference": "4d0bdbe1206df7440219ce14c972aa57cc5e4982",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0",
- "psr/http-message": "~1.0"
- },
- "provide": {
- "psr/http-message-implementation": "1.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Psr7\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "description": "PSR-7 message implementation",
- "keywords": [
- "http",
- "message",
- "stream",
- "uri"
- ],
- "time": "2015-11-03 01:34:55"
- },
- {
- "name": "guzzlehttp/ringphp",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/RingPHP.git",
- "reference": "9465032ac5d6beaa55f10923403e6e1c36018d9c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/RingPHP/zipball/9465032ac5d6beaa55f10923403e6e1c36018d9c",
- "reference": "9465032ac5d6beaa55f10923403e6e1c36018d9c",
- "shasum": ""
- },
- "require": {
- "guzzlehttp/streams": "~3.0",
- "php": ">=5.4.0",
- "react/promise": "~2.0"
- },
- "require-dev": {
- "ext-curl": "*",
- "phpunit/phpunit": "~4.0"
- },
- "suggest": {
- "ext-curl": "Guzzle will use specific adapters if cURL is present"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Ring\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "description": "Provides a simple API and specification that abstracts away the details of HTTP into a single PHP function.",
- "time": "2015-05-21 17:23:02"
- },
- {
- "name": "guzzlehttp/streams",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/streams.git",
- "reference": "d1f8a6c55f0f753cfd6f6755856473eb02cedb19"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/streams/zipball/d1f8a6c55f0f753cfd6f6755856473eb02cedb19",
- "reference": "d1f8a6c55f0f753cfd6f6755856473eb02cedb19",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Stream\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "description": "Provides a simple abstraction over streams of data",
- "homepage": "http://guzzlephp.org/",
- "keywords": [
- "Guzzle",
- "stream"
- ],
- "time": "2015-01-22 00:01:34"
- },
- {
- "name": "myclabs/deep-copy",
- "version": "1.5.0",
- "source": {
- "type": "git",
- "url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "e3abefcd7f106677fd352cd7c187d6c969aa9ddc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/e3abefcd7f106677fd352cd7c187d6c969aa9ddc",
- "reference": "e3abefcd7f106677fd352cd7c187d6c969aa9ddc",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0"
- },
- "require-dev": {
- "doctrine/collections": "1.*",
- "phpunit/phpunit": "~4.1"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "DeepCopy\\": "src/DeepCopy/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Create deep copies (clones) of your objects",
- "homepage": "https://github.com/myclabs/DeepCopy",
- "keywords": [
- "clone",
- "copy",
- "duplicate",
- "object",
- "object graph"
- ],
- "time": "2015-11-07 22:20:37"
- },
- {
- "name": "phpdocumentor/reflection-docblock",
- "version": "2.0.4",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8",
- "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "suggest": {
- "dflydev/markdown": "~1.0",
- "erusev/parsedown": "~1.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "phpDocumentor": [
- "src/"
- ]
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "mike.vanriel@naenius.com"
- }
- ],
- "time": "2015-02-03 12:10:50"
- },
- {
- "name": "phpspec/php-diff",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/phpspec/php-diff.git",
- "reference": "30e103d19519fe678ae64a60d77884ef3d71b28a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpspec/php-diff/zipball/30e103d19519fe678ae64a60d77884ef3d71b28a",
- "reference": "30e103d19519fe678ae64a60d77884ef3d71b28a",
- "shasum": ""
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "Diff": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Chris Boulton",
- "homepage": "http://github.com/chrisboulton",
- "role": "Original developer"
- }
- ],
- "description": "A comprehensive library for generating differences between two hashable objects (strings or arrays).",
- "time": "2013-11-01 13:02:21"
- },
- {
- "name": "phpspec/prophecy",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/phpspec/prophecy.git",
- "reference": "4f9b1eaf0a7da77c362f8d91cbc68ab1f4718d62"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4f9b1eaf0a7da77c362f8d91cbc68ab1f4718d62",
- "reference": "4f9b1eaf0a7da77c362f8d91cbc68ab1f4718d62",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.0.2",
- "phpdocumentor/reflection-docblock": "~2.0",
- "sebastian/comparator": "~1.1"
- },
- "require-dev": {
- "phpspec/phpspec": "~2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.5.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Prophecy\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Konstantin Kudryashov",
- "email": "ever.zet@gmail.com",
- "homepage": "http://everzet.com"
- },
- {
- "name": "Marcello Duarte",
- "email": "marcello.duarte@gmail.com"
- }
- ],
- "description": "Highly opinionated mocking framework for PHP 5.3+",
- "homepage": "https://github.com/phpspec/prophecy",
- "keywords": [
- "Double",
- "Dummy",
- "fake",
- "mock",
- "spy",
- "stub"
- ],
- "time": "2015-09-22 14:49:23"
- },
- {
- "name": "phpunit/php-code-coverage",
- "version": "2.2.x-dev",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "phpunit/php-file-iterator": "~1.3",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-token-stream": "~1.3",
- "sebastian/environment": "^1.3.2",
- "sebastian/version": "~1.0"
- },
- "require-dev": {
- "ext-xdebug": ">=2.1.4",
- "phpunit/phpunit": "~4"
- },
- "suggest": {
- "ext-dom": "*",
- "ext-xdebug": ">=2.2.1",
- "ext-xmlwriter": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.2.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
- "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
- "keywords": [
- "coverage",
- "testing",
- "xunit"
- ],
- "time": "2015-10-06 15:47:00"
- },
- {
- "name": "phpunit/php-file-iterator",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
- "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "FilterIterator implementation that filters files based on a list of suffixes.",
- "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
- "keywords": [
- "filesystem",
- "iterator"
- ],
- "time": "2015-06-21 13:08:43"
- },
- {
- "name": "phpunit/php-text-template",
- "version": "1.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Simple template engine.",
- "homepage": "https://github.com/sebastianbergmann/php-text-template/",
- "keywords": [
- "template"
- ],
- "time": "2015-06-21 13:50:34"
- },
- {
- "name": "phpunit/php-timer",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
- "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Utility class for timing",
- "homepage": "https://github.com/sebastianbergmann/php-timer/",
- "keywords": [
- "timer"
- ],
- "time": "2015-06-21 08:01:12"
- },
- {
- "name": "phpunit/php-token-stream",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-token-stream.git",
- "reference": "cab6c6fefee93d7b7c3a01292a0fe0884ea66644"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/cab6c6fefee93d7b7c3a01292a0fe0884ea66644",
- "reference": "cab6c6fefee93d7b7c3a01292a0fe0884ea66644",
- "shasum": ""
- },
- "require": {
- "ext-tokenizer": "*",
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Wrapper around PHP's tokenizer extension.",
- "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
- "keywords": [
- "tokenizer"
- ],
- "time": "2015-09-23 14:46:55"
- },
- {
- "name": "phpunit/phpunit",
- "version": "4.8.x-dev",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "6f9251d0910483fcbe22ee7a47ed604e43070770"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/6f9251d0910483fcbe22ee7a47ed604e43070770",
- "reference": "6f9251d0910483fcbe22ee7a47ed604e43070770",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-json": "*",
- "ext-pcre": "*",
- "ext-reflection": "*",
- "ext-spl": "*",
- "php": ">=5.3.3",
- "phpspec/prophecy": "^1.3.1",
- "phpunit/php-code-coverage": "~2.1",
- "phpunit/php-file-iterator": "~1.4",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-timer": ">=1.0.6",
- "phpunit/phpunit-mock-objects": "~2.3",
- "sebastian/comparator": "~1.1",
- "sebastian/diff": "~1.2",
- "sebastian/environment": "~1.3",
- "sebastian/exporter": "~1.2",
- "sebastian/global-state": "~1.0",
- "sebastian/version": "~1.0",
- "symfony/yaml": "~2.1|~3.0"
- },
- "suggest": {
- "phpunit/php-invoker": "~1.1"
- },
- "bin": [
- "phpunit"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.8.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "The PHP Unit Testing framework.",
- "homepage": "https://phpunit.de/",
- "keywords": [
- "phpunit",
- "testing",
- "xunit"
- ],
- "time": "2015-11-11 12:23:02"
- },
- {
- "name": "psr/http-message",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-message.git",
- "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
- "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Http\\Message\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for HTTP messages",
- "keywords": [
- "http",
- "http-message",
- "psr",
- "psr-7",
- "request",
- "response"
- ],
- "time": "2015-05-04 20:22:00"
- },
- {
- "name": "react/promise",
- "version": "v2.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/reactphp/promise.git",
- "reference": "3b6fca09c7d56321057fa8867c8dbe1abf648627"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/reactphp/promise/zipball/3b6fca09c7d56321057fa8867c8dbe1abf648627",
- "reference": "3b6fca09c7d56321057fa8867c8dbe1abf648627",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "React\\Promise\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jan Sorgalla",
- "email": "jsorgalla@gmail.com"
- }
- ],
- "description": "A lightweight implementation of CommonJS Promises/A for PHP",
- "time": "2015-07-03 13:48:55"
- },
- {
- "name": "sebastian/comparator",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "937efb279bd37a375bcadf584dec0726f84dbf22"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22",
- "reference": "937efb279bd37a375bcadf584dec0726f84dbf22",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "sebastian/diff": "~1.2",
- "sebastian/exporter": "~1.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@2bepublished.at"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Provides the functionality to compare PHP values for equality",
- "homepage": "http://www.github.com/sebastianbergmann/comparator",
- "keywords": [
- "comparator",
- "compare",
- "equality"
- ],
- "time": "2015-07-26 15:48:44"
- },
- {
- "name": "sebastian/diff",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "6899b3e33bfbd386d88b5eea5f65f563e8793051"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/6899b3e33bfbd386d88b5eea5f65f563e8793051",
- "reference": "6899b3e33bfbd386d88b5eea5f65f563e8793051",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Kore Nordmann",
- "email": "mail@kore-nordmann.de"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Diff implementation",
- "homepage": "http://www.github.com/sebastianbergmann/diff",
- "keywords": [
- "diff"
- ],
- "time": "2015-06-22 14:15:55"
- },
- {
- "name": "sebastian/environment",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6324c907ce7a52478eeeaede764f48733ef5ae44",
- "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Provides functionality to handle HHVM/PHP environments",
- "homepage": "http://www.github.com/sebastianbergmann/environment",
- "keywords": [
- "Xdebug",
- "environment",
- "hhvm"
- ],
- "time": "2015-08-03 06:14:51"
- },
- {
- "name": "sebastian/exporter",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "f88f8936517d54ae6d589166810877fb2015d0a2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f88f8936517d54ae6d589166810877fb2015d0a2",
- "reference": "f88f8936517d54ae6d589166810877fb2015d0a2",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "sebastian/recursion-context": "~1.0"
- },
- "require-dev": {
- "ext-mbstring": "*",
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@2bepublished.at"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- }
- ],
- "description": "Provides the functionality to export PHP variables for visualization",
- "homepage": "http://www.github.com/sebastianbergmann/exporter",
- "keywords": [
- "export",
- "exporter"
- ],
- "time": "2015-08-09 04:23:41"
- },
- {
- "name": "sebastian/global-state",
- "version": "1.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
- "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.2"
- },
- "suggest": {
- "ext-uopz": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Snapshotting of global state",
- "homepage": "http://www.github.com/sebastianbergmann/global-state",
- "keywords": [
- "global state"
- ],
- "time": "2015-10-12 03:26:01"
- },
- {
- "name": "sebastian/recursion-context",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "994d4a811bafe801fb06dccbee797863ba2792ba"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/994d4a811bafe801fb06dccbee797863ba2792ba",
- "reference": "994d4a811bafe801fb06dccbee797863ba2792ba",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- }
- ],
- "description": "Provides functionality to recursively process PHP variables",
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
- "time": "2015-06-21 08:04:50"
- },
- {
- "name": "sebastian/version",
- "version": "1.0.6",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/version.git",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "shasum": ""
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library that helps with managing the version number of Git-hosted PHP projects",
- "homepage": "https://github.com/sebastianbergmann/version",
- "time": "2015-06-21 13:59:46"
- },
- {
- "name": "symfony/browser-kit",
- "version": "2.8.x-dev",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/browser-kit.git",
- "reference": "589f32fe4f43155ea303d505171634c45f15e876"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/589f32fe4f43155ea303d505171634c45f15e876",
- "reference": "589f32fe4f43155ea303d505171634c45f15e876",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9",
- "symfony/dom-crawler": "~2.0,>=2.0.5|~3.0.0"
- },
- "require-dev": {
- "symfony/css-selector": "~2.0,>=2.0.5|~3.0.0",
- "symfony/process": "~2.3.34|~2.7,>=2.7.6|~3.0.0"
- },
- "suggest": {
- "symfony/process": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.8-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\BrowserKit\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony BrowserKit Component",
- "homepage": "https://symfony.com",
- "time": "2015-11-02 20:29:24"
- },
- {
- "name": "symfony/console",
- "version": "2.8.x-dev",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/console.git",
- "reference": "74bf9202a531cc6942454eb9e2dd1e13bde34a31"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/74bf9202a531cc6942454eb9e2dd1e13bde34a31",
- "reference": "74bf9202a531cc6942454eb9e2dd1e13bde34a31",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9",
- "symfony/polyfill-mbstring": "~1.0"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/event-dispatcher": "~2.1|~3.0.0",
- "symfony/process": "~2.1|~3.0.0"
- },
- "suggest": {
- "psr/log": "For using the console logger",
- "symfony/event-dispatcher": "",
- "symfony/process": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.8-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Console\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Console Component",
- "homepage": "https://symfony.com",
- "time": "2015-11-04 00:47:19"
- },
- {
- "name": "symfony/css-selector",
- "version": "2.8.x-dev",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/css-selector.git",
- "reference": "b600fec37c0efca08046d481d79e7eabc07108ff"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/b600fec37c0efca08046d481d79e7eabc07108ff",
- "reference": "b600fec37c0efca08046d481d79e7eabc07108ff",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.8-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\CssSelector\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jean-François Simon",
- "email": "jeanfrancois.simon@sensiolabs.com"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony CssSelector Component",
- "homepage": "https://symfony.com",
- "time": "2015-10-30 20:15:42"
- },
- {
- "name": "symfony/dom-crawler",
- "version": "2.8.x-dev",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/dom-crawler.git",
- "reference": "740c98235f5b6e2b0b13df2fb97c7a1c7d1a18fc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/740c98235f5b6e2b0b13df2fb97c7a1c7d1a18fc",
- "reference": "740c98235f5b6e2b0b13df2fb97c7a1c7d1a18fc",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9",
- "symfony/polyfill-mbstring": "~1.0"
- },
- "require-dev": {
- "symfony/css-selector": "~2.8|~3.0.0"
- },
- "suggest": {
- "symfony/css-selector": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.8-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\DomCrawler\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony DomCrawler Component",
- "homepage": "https://symfony.com",
- "time": "2015-11-02 20:29:39"
- },
- {
- "name": "symfony/event-dispatcher",
- "version": "2.8.x-dev",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "a5eb815363c0388e83247e7e9853e5dbc14999cc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a5eb815363c0388e83247e7e9853e5dbc14999cc",
- "reference": "a5eb815363c0388e83247e7e9853e5dbc14999cc",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "~2.0,>=2.0.5|~3.0.0",
- "symfony/dependency-injection": "~2.6|~3.0.0",
- "symfony/expression-language": "~2.6|~3.0.0",
- "symfony/stopwatch": "~2.3|~3.0.0"
- },
- "suggest": {
- "symfony/dependency-injection": "",
- "symfony/http-kernel": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.8-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\EventDispatcher\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony EventDispatcher Component",
- "homepage": "https://symfony.com",
- "time": "2015-10-30 20:15:42"
- },
- {
- "name": "symfony/finder",
- "version": "2.8.x-dev",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/finder.git",
- "reference": "ead9b07af4ba77b6507bee697396a5c79e633f08"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/ead9b07af4ba77b6507bee697396a5c79e633f08",
- "reference": "ead9b07af4ba77b6507bee697396a5c79e633f08",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.8-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Finder\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Finder Component",
- "homepage": "https://symfony.com",
- "time": "2015-10-30 20:15:42"
- },
- {
- "name": "symfony/polyfill-mbstring",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "0b6a8940385311a24e060ec1fe35680e17c74497"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0b6a8940385311a24e060ec1fe35680e17c74497",
- "reference": "0b6a8940385311a24e060ec1fe35680e17c74497",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Mbstring\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for the Mbstring extension",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "mbstring",
- "polyfill",
- "portable",
- "shim"
- ],
- "time": "2015-11-04 20:28:58"
- },
- {
- "name": "symfony/yaml",
- "version": "2.8.x-dev",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "5ff00ea2999343d42398fcb793bbfc64c92235ff"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/5ff00ea2999343d42398fcb793bbfc64c92235ff",
- "reference": "5ff00ea2999343d42398fcb793bbfc64c92235ff",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.8-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Yaml\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Yaml Component",
- "homepage": "https://symfony.com",
- "time": "2015-11-05 09:04:44"
- },
- {
- "name": "yiisoft/yii2-codeception",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/yiisoft/yii2-codeception.git",
- "reference": "22e981b8c93d9882ccd333ba001767a6b99aa9a1"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/yiisoft/yii2-codeception/zipball/22e981b8c93d9882ccd333ba001767a6b99aa9a1",
- "reference": "22e981b8c93d9882ccd333ba001767a6b99aa9a1",
- "shasum": ""
- },
- "require": {
- "yiisoft/yii2": ">=2.0.4"
- },
- "type": "yii2-extension",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "yii\\codeception\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Mark Jebri",
- "email": "mark.github@yandex.ru"
- }
- ],
- "description": "The Codeception integration for the Yii framework",
- "keywords": [
- "codeception",
- "yii2"
- ],
- "time": "2015-10-29 09:02:25"
- },
- {
- "name": "yiisoft/yii2-debug",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/yiisoft/yii2-debug.git",
- "reference": "7ba01f0049f691bd76259e10bdede0709323ffc2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/yiisoft/yii2-debug/zipball/7ba01f0049f691bd76259e10bdede0709323ffc2",
- "reference": "7ba01f0049f691bd76259e10bdede0709323ffc2",
- "shasum": ""
- },
- "require": {
- "yiisoft/yii2": ">=2.0.4",
- "yiisoft/yii2-bootstrap": "*"
- },
- "type": "yii2-extension",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "yii\\debug\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Qiang Xue",
- "email": "qiang.xue@gmail.com"
- }
- ],
- "description": "The debugger extension for the Yii framework",
- "keywords": [
- "debug",
- "debugger",
- "yii2"
- ],
- "time": "2015-10-30 19:44:49"
- },
- {
- "name": "yiisoft/yii2-gii",
- "version": "2.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/yiisoft/yii2-gii.git",
- "reference": "bb79aeafa8e3b89dd25e07ac895b269680e537a8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/yiisoft/yii2-gii/zipball/bb79aeafa8e3b89dd25e07ac895b269680e537a8",
- "reference": "bb79aeafa8e3b89dd25e07ac895b269680e537a8",
- "shasum": ""
- },
- "require": {
- "bower-asset/typeahead.js": "0.10.*",
- "phpspec/php-diff": ">=1.0.2",
- "yiisoft/yii2": "*",
- "yiisoft/yii2-bootstrap": "*"
- },
- "type": "yii2-extension",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "yii\\gii\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Qiang Xue",
- "email": "qiang.xue@gmail.com"
- }
- ],
- "description": "The Gii extension for the Yii framework",
- "keywords": [
- "code generator",
- "gii",
- "yii2"
- ],
- "time": "2015-03-01 06:22:44"
- }
- ],
- "aliases": [],
- "minimum-stability": "dev",
- "stability-flags": [],
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": {
- "php": ">=5.4.0"
- },
- "platform-dev": []
-}
diff --git a/yii/notejam/config/db.php b/yii/notejam/config/db.php
deleted file mode 100644
index 7f0c578b5..000000000
--- a/yii/notejam/config/db.php
+++ /dev/null
@@ -1,9 +0,0 @@
- 'yii\db\Connection',
- 'dsn' => 'sqlite:' . __DIR__ . '/../notejam.db',
- 'username' => '',
- 'password' => '',
- 'charset' => 'utf8',
-];
diff --git a/yii/notejam/config/params.php b/yii/notejam/config/params.php
deleted file mode 100644
index fc488bd08..000000000
--- a/yii/notejam/config/params.php
+++ /dev/null
@@ -1,6 +0,0 @@
- 'komarserjio@gmail.com',
- 'supportEmail' => 'noreply@notejamapp.com',
-];
diff --git a/yii/notejam/config/web.php b/yii/notejam/config/web.php
deleted file mode 100644
index fc222f288..000000000
--- a/yii/notejam/config/web.php
+++ /dev/null
@@ -1,81 +0,0 @@
- 'basic',
- 'basePath' => dirname(__DIR__),
- 'layout'=>'base',
- 'bootstrap' => ['log'],
- 'components' => [
- 'request' => [
- // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
- 'cookieValidationKey' => 'qAEARuRBk0l-EWX0rSr6PPni6rgg3SEd',
- ],
- 'cache' => [
- 'class' => 'yii\caching\FileCache',
- ],
- 'user' => [
- 'identityClass' => 'app\models\User',
- 'enableAutoLogin' => true,
- 'loginUrl'=>'signin',
- ],
- 'errorHandler' => [
- 'errorAction' => 'note/error',
- ],
- 'urlManager' => [
- 'class' => 'yii\web\UrlManager',
- 'enablePrettyUrl' => true,
- 'showScriptName' => false,
- //'suffix' => '/',
- 'rules' => [
- '' => 'note/list',
-
- 'signup' => 'user/signup',
- 'signin' => 'user/signin',
- 'settings' => 'user/settings',
- 'signout' => 'user/signout',
- 'forgot-password' => 'user/forgot-password',
-
- 'pads/create' => 'pad/create',
- 'pads//edit' => 'pad/edit',
- 'pads//delete' => 'pad/delete',
- 'pads/' => 'pad/view',
-
- 'notes/create' => 'note/create',
- 'notes//edit' => 'note/edit',
- 'notes//delete' => 'note/delete',
- 'notes/' => 'note/view',
- ]
- ],
- 'mailer' => [
- 'class' => 'yii\swiftmailer\Mailer',
- // send all mails to a file by default. You have to set
- // 'useFileTransport' to false and configure a transport
- // for the mailer to send real emails.
- 'useFileTransport' => true,
- ],
- 'log' => [
- 'traceLevel' => YII_DEBUG ? 3 : 0,
- 'targets' => [
- [
- 'class' => 'yii\log\FileTarget',
- 'levels' => ['error', 'warning'],
- ],
- ],
- ],
- 'db' => require(__DIR__ . '/db.php'),
- ],
- 'params' => $params,
-];
-
-if (YII_ENV_DEV) {
- // configuration adjustments for 'dev' environment
- $config['bootstrap'][] = 'debug';
- $config['modules']['debug'] = 'yii\debug\Module';
-
- $config['bootstrap'][] = 'gii';
- $config['modules']['gii'] = 'yii\gii\Module';
-}
-
-return $config;
diff --git a/yii/notejam/controllers/BaseController.php b/yii/notejam/controllers/BaseController.php
deleted file mode 100644
index 6d3c29f24..000000000
--- a/yii/notejam/controllers/BaseController.php
+++ /dev/null
@@ -1,26 +0,0 @@
- 'name ASC',
- '-name' => 'name DESC',
- 'updated_at' => 'updated_at ASC',
- '-updated_at' => 'updated_at DESC',
- ];
- return $config[Yii::$app->request->get('order', '-updated_at')];
- }
-}
-
diff --git a/yii/notejam/controllers/NoteController.php b/yii/notejam/controllers/NoteController.php
deleted file mode 100644
index dec31f0ac..000000000
--- a/yii/notejam/controllers/NoteController.php
+++ /dev/null
@@ -1,145 +0,0 @@
- [
- 'class' => AccessControl::className(),
- 'rules' => [
- [
- 'allow' => true,
- 'roles' => ['@'],
- ],
- ],
- ],
- 'verbs' => [
- 'class' => VerbFilter::className(),
- 'actions' => [
- 'list' => ['get'],
- 'create' => ['get', 'post'],
- 'edit' => ['get', 'post'],
- 'delete' => ['get', 'post'],
- 'view' => ['get'],
- 'error' => ['get'],
- ],
- ],
- ];
- }
-
- /**
- * @inheritdoc
- */
- public function actions()
- {
- return [
- 'error' => [
- 'class' => 'yii\web\ErrorAction',
- ]
- ];
- }
-
- public function actionList()
- {
- $notes = Note::find()
- ->where(['user_id' => Yii::$app->user->identity->getId()])
- ->orderBy($this->getOrderParam())
- ->all();
-
- return $this->render('list', ['notes' => $notes]);
- }
-
- public function actionCreate($pad)
- {
- $note = new Note();
- $note->pad_id = $pad;
-
- if ($note->load(Yii::$app->request->post()) && $note->validate()) {
- /** @var User $user */
- $user = Yii::$app->user->identity;
- $user->link('notes', $note);
- Yii::$app->session->setFlash(
- 'success', 'Note is successfully created.'
- );
- return $this->redirect('note/list');
- }
- return $this->render('create', [
- 'note' => $note,
- ]);
- }
-
- public function actionEdit($id)
- {
- $note = $this->getNote($id);
-
- if ($note->load(Yii::$app->request->post()) && $note->validate()) {
- /** @var User $user */
- $user = Yii::$app->user->identity;
- $user->link('notes', $note);
- Yii::$app->session->setFlash(
- 'success', 'Note is successfully updated.'
- );
- return $this->redirect(['note/edit', 'id' => $note->id]);
- }
- return $this->render('edit', [
- 'note' => $note,
- ]);
- }
-
- public function actionView($id)
- {
- $note = $this->getNote($id);
-
- return $this->render('view', [
- 'note' => $note,
- ]);
- }
-
- public function actionDelete($id)
- {
- $note = $this->getNote($id);
-
- if (Yii::$app->request->getIsPost()) {
- $note->delete();
- Yii::$app->session->setFlash(
- 'success', 'Note is successfully deleted.'
- );
- return $this->redirect('note/list');
- }
- return $this->render('delete', [
- 'note' => $note,
- ]);
- }
-
- /**
- * Get note or raise 404
- *
- * @param integer $id note id
- * @return Note
- * @throws \yii\web\HttpException
- */
- private function getNote($id)
- {
- $note = Note::findOne([
- 'id' => $id,
- 'user_id' => Yii::$app->user->identity->getId(),
- ]);
- if (!$note) {
- throw new \yii\web\HttpException(404, 'Not Found');
- }
- return $note;
- }
-}
-
diff --git a/yii/notejam/controllers/PadController.php b/yii/notejam/controllers/PadController.php
deleted file mode 100644
index 7c32ebe41..000000000
--- a/yii/notejam/controllers/PadController.php
+++ /dev/null
@@ -1,115 +0,0 @@
- [
- 'class' => AccessControl::className(),
- 'rules' => [
- [
- 'allow' => true,
- 'roles' => ['@'],
- ],
- ],
- ],
- 'verbs' => [
- 'class' => VerbFilter::className(),
- 'actions' => [
- 'create' => ['get', 'post'],
- 'edit' => ['get', 'post'],
- 'delete' => ['get', 'post'],
- ],
- ],
- ];
- }
-
- public function actionCreate()
- {
- $pad = new Pad();
-
- if ($pad->load(Yii::$app->request->post()) && $pad->validate()) {
- /** @var User $user */
- $user = Yii::$app->user->identity;
- $user->link('pads', $pad);
- Yii::$app->session->setFlash(
- 'success', 'Pad is successfully created.'
- );
- return $this->redirect('note/list');
- }
- return $this->render('create', [
- 'pad' => $pad,
- ]);
- }
-
- public function actionEdit($id)
- {
- $pad = $this->getPad($id);
-
- if ($pad->load(Yii::$app->request->post()) && $pad->validate()) {
- $pad->save();
- Yii::$app->session->setFlash(
- 'success', 'Pad is successfully updated.'
- );
- return $this->redirect('note/list');
- }
- return $this->render('edit', [
- 'pad' => $pad,
- ]);
- }
-
- public function actionDelete($id)
- {
- $pad = $this->getPad($id);
-
- if (Yii::$app->request->getIsPost()) {
- $pad->delete();
- Yii::$app->session->setFlash(
- 'success', 'Pad is successfully deleted.'
- );
- return $this->redirect('note/list');
- }
- return $this->render('delete', [
- 'pad' => $pad,
- ]);
- }
-
- public function actionView($id)
- {
- $pad = $this->getPad($id);
- $notes = $pad->getNotes()->orderBy($this->getOrderParam())->all();
- return $this->render('view', ['pad' => $pad, 'notes' => $notes]);
- }
-
- /**
- * Get pad or raise 404
- *
- * @param integer $id pad id
- * @return Pad
- * @throws \yii\web\HttpException
- */
- private function getPad($id)
- {
- $pad = Pad::findOne([
- 'id' => $id,
- 'user_id' => Yii::$app->user->identity->getId(),
- ]);
- if (!$pad) {
- throw new \yii\web\HttpException(404, 'Not Found');
- }
- return $pad;
- }
-}
-
-
diff --git a/yii/notejam/controllers/UserController.php b/yii/notejam/controllers/UserController.php
deleted file mode 100644
index 4db67b527..000000000
--- a/yii/notejam/controllers/UserController.php
+++ /dev/null
@@ -1,126 +0,0 @@
- [
- 'class' => AccessControl::className(),
- 'only' => ['logout', 'settings'],
- 'rules' => [
- [
- 'allow' => true,
- 'roles' => ['@'],
- ],
- ],
- ],
- 'verbs' => [
- 'class' => VerbFilter::className(),
- 'actions' => [
- 'logout' => ['get'],
- 'settings' => ['get', 'post'],
- 'signin' => ['get', 'post'],
- 'signup' => ['get', 'post'],
- ],
- ],
- ];
- }
-
- public function actions()
- {
- return [
- 'error' => [
- 'class' => 'yii\web\ErrorAction',
- ]
- ];
- }
-
- public function actionSettings()
- {
- $model = new ChangePassword();
- if ($model->load(Yii::$app->request->post()) &&
- $model->changePassword(Yii::$app->user->identity)
- ) {
- Yii::$app->session->setFlash(
- 'success', 'Password is successfully changed.'
- );
- return $this->goHome();
- } else {
- return $this->render('settings', [
- 'model' => $model,
- ]);
- }
- }
-
- public function actionForgotPassword()
- {
- $model = new ForgotPassword();
- if ($model->load(Yii::$app->request->post()) &&
- $model->resetPassword()
- ) {
- Yii::$app->session->setFlash(
- 'success', 'New password sent. Check your inbox.'
- );
- return $this->redirect('signin');
- } else {
- return $this->render('forgot-password', [
- 'model' => $model,
- ]);
- }
- }
-
-
- public function actionSignin()
- {
- if (!\Yii::$app->user->isGuest) {
- return $this->goHome();
- }
-
- $model = new SigninForm();
- if ($model->load(Yii::$app->request->post()) && $model->signin()) {
- return $this->goHome();
- } else {
- return $this->render('signin', [
- 'model' => $model,
- ]);
- }
- }
-
- public function actionSignup()
- {
- $model = new SignupForm();
- if ($model->load(Yii::$app->request->post())) {
- if ($user = $model->signup()) {
- Yii::$app->session->setFlash(
- 'success', 'Account is created. Now you can sign in.'
- );
- return $this->goHome();
- }
- }
-
- return $this->render('signup', [
- 'model' => $model,
- ]);
- }
-
- public function actionSignout()
- {
- Yii::$app->user->logout();
- return $this->goHome();
- }
-}
-
diff --git a/yii/notejam/mail/layouts/html.php b/yii/notejam/mail/layouts/html.php
deleted file mode 100644
index bddbc6129..000000000
--- a/yii/notejam/mail/layouts/html.php
+++ /dev/null
@@ -1,22 +0,0 @@
-
-beginPage() ?>
-
-
-
-
- = Html::encode($this->title) ?>
- head() ?>
-
-
- beginBody() ?>
- = $content ?>
- endBody() ?>
-
-
-endPage() ?>
diff --git a/yii/notejam/mail/password.php b/yii/notejam/mail/password.php
deleted file mode 100644
index 27af775df..000000000
--- a/yii/notejam/mail/password.php
+++ /dev/null
@@ -1,5 +0,0 @@
-Hi, = $user->email ?>
-=========================================
-
-Your new password is = $password ?>
-
diff --git a/yii/notejam/migrations/m140804_111205_create_tables.php b/yii/notejam/migrations/m140804_111205_create_tables.php
deleted file mode 100644
index 5d0ffbd68..000000000
--- a/yii/notejam/migrations/m140804_111205_create_tables.php
+++ /dev/null
@@ -1,38 +0,0 @@
-createTable('users', [
- 'id' => $this->primaryKey(),
- 'email' => $this->string()->notNull(),
- 'auth_key' => $this->string(32)->notNull(),
- 'password_hash' => $this->string()->notNull(),
- ]);
- $this->createTable('pads', [
- 'id' => $this->primaryKey(),
- 'name' => $this->string()->notNull(),
- 'user_id' => $this->integer()->notNull(),
- ]);
- $this->createTable('notes', [
- 'id' => $this->primaryKey(),
- 'name' => $this->string()->notNull(),
- 'text' => $this->text()->notNull(),
- 'user_id' => $this->integer()->notNull(),
- 'pad_id' => $this->integer(),
- 'created_at' => $this->dateTime()->notNull(),
- 'updated_at' => $this->dateTime()->notNull(),
- ]);
- }
-
- public function down()
- {
- $this->dropTable('notes');
- $this->dropTable('pads');
- $this->dropTable('users');
- }
-}
diff --git a/yii/notejam/models/ChangePassword.php b/yii/notejam/models/ChangePassword.php
deleted file mode 100644
index d912e9599..000000000
--- a/yii/notejam/models/ChangePassword.php
+++ /dev/null
@@ -1,57 +0,0 @@
- 6],
-
- ['passwordConfirmation', 'compare', 'compareAttribute' => 'password', 'message' => "Passwords don't match"],
- ];
- }
-
- /**
- * Signs user up
- *
- * @param User $user
- * @return User|null the saved model or null if saving fails
- */
- public function changePassword($user)
- {
- if ($this->validate()) {
- if ($user->validatePassword($this->currentPassword)) {
- $user->setPassword($this->password);
- $user->generateAuthKey();
- if ($user->save()) {
- return $user;
- }
- } else {
- $this->addError(
- 'currentPassword', 'Current password is incorrect'
- );
- }
- }
-
- return null;
- }
-}
-
diff --git a/yii/notejam/models/ForgotPassword.php b/yii/notejam/models/ForgotPassword.php
deleted file mode 100644
index e9e4cd105..000000000
--- a/yii/notejam/models/ForgotPassword.php
+++ /dev/null
@@ -1,74 +0,0 @@
- 'trim'],
- ['email', 'required'],
- ['email', 'email'],
- ['email', 'exist', 'targetClass' => '\app\models\User', 'message' => 'No user found.'],
- ];
- }
-
- /**
- * Set new password
- *
- * @return User
- */
- public function resetPassword()
- {
- if ($this->validate()) {
- $user = User::findOne(['email' => $this->email]);
- $password = $this->generatePassword();
- $user->setPassword($password);
- $user->generateAuthKey();
- $user->save();
-
- $this->sendPassword($user, $password);
- return $user;
- }
-
- return null;
- }
-
- /**
- * Generate new password
- *
- * @return string
- */
- protected function generatePassword()
- {
- return Yii::$app->security->generateRandomString(8);
- }
-
- /**
- * Send new password
- * @param User $user
- * @param string $password
- */
- public function sendPassword($user, $password)
- {
- $params = ['user' => $user, 'password' => $password];
- Yii::$app->mailer->compose('password', $params)
- ->setFrom([Yii::$app->params['supportEmail'] => 'Notejam'])
- ->setTo($user->email)
- ->setSubject('New password')
- ->send();
- }
-}
-
-
diff --git a/yii/notejam/models/LoginForm.php b/yii/notejam/models/LoginForm.php
deleted file mode 100644
index ba4c9e1a5..000000000
--- a/yii/notejam/models/LoginForm.php
+++ /dev/null
@@ -1,75 +0,0 @@
-hasErrors()) {
- $user = $this->getUser();
-
- if (!$user || !$user->validatePassword($this->password)) {
- $this->addError('password', 'Incorrect username or password.');
- }
- }
- }
-
- /**
- * Logs in a user using the provided username and password.
- * @return boolean whether the user is logged in successfully
- */
- public function login()
- {
- if ($this->validate()) {
- return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600*24*30 : 0);
- } else {
- return false;
- }
- }
-
- /**
- * Finds user by [[username]]
- *
- * @return User|null
- */
- public function getUser()
- {
- if ($this->_user === false) {
- $this->_user = User::findByEmail($this->username);
- }
-
- return $this->_user;
- }
-}
diff --git a/yii/notejam/models/Note.php b/yii/notejam/models/Note.php
deleted file mode 100644
index 3e1f33eec..000000000
--- a/yii/notejam/models/Note.php
+++ /dev/null
@@ -1,97 +0,0 @@
- TimestampBehavior::className(),
- 'createdAtAttribute' => 'created_at',
- 'updatedAtAttribute' => 'updated_at',
- 'value' => new Expression('datetime("now")'),
- ],
- ];
- }
-
-
- /**
- * @return string the name of the table associated with
- * this ActiveRecord class.
- */
- public static function tableName()
- {
- return 'notes';
- }
-
- /**
- * Get user
- *
- * @return User
- */
- public function getUser()
- {
- return $this->hasOne(User::className(), ['id' => 'user_id']);
- }
-
- /**
- * Get pad
- *
- * @return Pad
- */
- public function getPad()
- {
- return $this->hasOne(Pad::className(), ['id' => 'pad_id']);
- }
-
- /**
- *
- */
- public function getSmartDate()
- {
- # @TODO incorrect
- $day = 86400;
- $date = strtotime($this->updated_at);
- $diff = floor((time() - $date) / $day);
- if ($diff < 1) {
- return "Today at " . date("H:i", $date);
- } elseif ($diff == 1) {
- return "Yesterday at " . date("H:i", $date);
- } elseif ($diff > 1 && $diff < 8) {
- return "{$diff} days ago";
- } else {
- return date("d.m.Y", $date);
- }
- }
-}
-
-
diff --git a/yii/notejam/models/Pad.php b/yii/notejam/models/Pad.php
deleted file mode 100644
index c52af6ec1..000000000
--- a/yii/notejam/models/Pad.php
+++ /dev/null
@@ -1,53 +0,0 @@
-hasOne(User::className(), ['id' => 'user_id']);
- }
-
- /**
- * Get notes
- */
- public function getNotes()
- {
- return $this->hasMany(Note::className(), ['pad_id' => 'id']);
- }
-}
-
diff --git a/yii/notejam/models/SigninForm.php b/yii/notejam/models/SigninForm.php
deleted file mode 100644
index d46d02cc5..000000000
--- a/yii/notejam/models/SigninForm.php
+++ /dev/null
@@ -1,76 +0,0 @@
-hasErrors()) {
- $user = $this->getUser();
- if (!$user || !$user->validatePassword($this->password)) {
- $this->addError($attribute, 'Incorrect username or password.');
- }
- }
- }
-
- /**
- * Sign in a user using the provided username and password.
- *
- * @return boolean whether the user is logged in successfully
- */
- public function signin()
- {
- if ($this->validate()) {
- return Yii::$app->user->login(
- $this->getUser(), 36000000
- );
- } else {
- return false;
- }
- }
-
- /**
- * Finds user by [[username]]
- *
- * @return User|null
- */
- public function getUser()
- {
- if ($this->_user === false) {
- $this->_user = User::findByEmail($this->email);
- }
-
- return $this->_user;
- }
-}
diff --git a/yii/notejam/models/SignupForm.php b/yii/notejam/models/SignupForm.php
deleted file mode 100644
index 7a980edf0..000000000
--- a/yii/notejam/models/SignupForm.php
+++ /dev/null
@@ -1,53 +0,0 @@
- 'trim'],
- ['email', 'required'],
- ['email', 'email'],
- ['email', 'unique', 'targetClass' => '\app\models\User', 'message' => 'This email address has already been taken.'],
-
- ['password', 'required'],
- ['password', 'string', 'min' => 6],
-
- ['passwordConfirmation', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match"],
- ];
- }
-
- /**
- * Signs user up.
- *
- * @return User|null the saved model or null if saving fails
- */
- public function signup()
- {
- if ($this->validate()) {
- $user = new User();
- $user->email = $this->email;
- $user->setPassword($this->password);
- $user->generateAuthKey();
- $user->save();
- return $user;
- }
-
- return null;
- }
-}
diff --git a/yii/notejam/models/User.php b/yii/notejam/models/User.php
deleted file mode 100644
index c27fe70d5..000000000
--- a/yii/notejam/models/User.php
+++ /dev/null
@@ -1,127 +0,0 @@
-getPrimaryKey();
- }
-
- /**
- * @inheritdoc
- */
- public function getAuthKey()
- {
- return $this->auth_key;
- }
-
- /**
- * Generates "remember me" authentication key
- */
- public function generateAuthKey()
- {
- $this->auth_key = Yii::$app->security->generateRandomString();
- }
-
- /**
- * @inheritdoc
- */
- public function validateAuthKey($authKey)
- {
- return $this->getAuthKey() === $authKey;
- }
-
- /**
- * Validates password
- *
- * @param string $password password to validate
- * @return boolean if password provided is valid for current user
- */
- public function validatePassword($password)
- {
- return Yii::$app->security->validatePassword(
- $password, $this->password_hash
- );
- }
-
- /**
- * Generates password hash from password and sets it to the model
- *
- * @param string $password
- */
- public function setPassword($password)
- {
- $this->password_hash =
- Yii::$app->security->generatePasswordHash($password);
- }
-
- /**
- * Finds user by email
- *
- * @param string $email
- * @return static|null
- */
- public static function findByEmail($email)
- {
- return static::findOne(['email' => $email]);
- }
-
- /**
- * Get notes
- */
- public function getNotes()
- {
- return $this->hasMany(Note::className(), ['user_id' => 'id']);
- }
-
- /**
- * Get pads
- */
- public function getPads()
- {
- return $this->hasMany(Pad::className(), ['user_id' => 'id']);
- }
-}
diff --git a/yii/notejam/requirements.php b/yii/notejam/requirements.php
deleted file mode 100644
index a38b9363f..000000000
--- a/yii/notejam/requirements.php
+++ /dev/null
@@ -1,102 +0,0 @@
-Error';
- echo 'The path to yii framework seems to be incorrect.
';
- echo 'You need to install Yii framework via composer or adjust the framework path in file ' . basename(__FILE__) . ' .
';
- echo 'Please refer to the README on how to install Yii.
';
-}
-
-require_once($frameworkPath . '/requirements/YiiRequirementChecker.php');
-$requirementsChecker = new YiiRequirementChecker();
-
-/**
- * Adjust requirements according to your application specifics.
- */
-$requirements = array(
- // Database :
- array(
- 'name' => 'PDO extension',
- 'mandatory' => true,
- 'condition' => extension_loaded('pdo'),
- 'by' => 'All DB-related classes',
- ),
- array(
- 'name' => 'PDO SQLite extension',
- 'mandatory' => false,
- 'condition' => extension_loaded('pdo_sqlite'),
- 'by' => 'All DB-related classes',
- 'memo' => 'Required for SQLite database.',
- ),
- array(
- 'name' => 'PDO MySQL extension',
- 'mandatory' => false,
- 'condition' => extension_loaded('pdo_mysql'),
- 'by' => 'All DB-related classes',
- 'memo' => 'Required for MySQL database.',
- ),
- array(
- 'name' => 'PDO PostgreSQL extension',
- 'mandatory' => false,
- 'condition' => extension_loaded('pdo_pgsql'),
- 'by' => 'All DB-related classes',
- 'memo' => 'Required for PostgreSQL database.',
- ),
- // Cache :
- array(
- 'name' => 'Memcache extension',
- 'mandatory' => false,
- 'condition' => extension_loaded('memcache') || extension_loaded('memcached'),
- 'by' => 'MemCache ',
- 'memo' => extension_loaded('memcached') ? 'To use memcached set MemCache::useMemcached to true
.' : ''
- ),
- array(
- 'name' => 'APC extension',
- 'mandatory' => false,
- 'condition' => extension_loaded('apc'),
- 'by' => 'ApcCache ',
- ),
- // PHP ini :
- 'phpSafeMode' => array(
- 'name' => 'PHP safe mode',
- 'mandatory' => false,
- 'condition' => $requirementsChecker->checkPhpIniOff("safe_mode"),
- 'by' => 'File uploading and console command execution',
- 'memo' => '"safe_mode" should be disabled at php.ini',
- ),
- 'phpExposePhp' => array(
- 'name' => 'Expose PHP',
- 'mandatory' => false,
- 'condition' => $requirementsChecker->checkPhpIniOff("expose_php"),
- 'by' => 'Security reasons',
- 'memo' => '"expose_php" should be disabled at php.ini',
- ),
- 'phpAllowUrlInclude' => array(
- 'name' => 'PHP allow url include',
- 'mandatory' => false,
- 'condition' => $requirementsChecker->checkPhpIniOff("allow_url_include"),
- 'by' => 'Security reasons',
- 'memo' => '"allow_url_include" should be disabled at php.ini',
- ),
- 'phpSmtp' => array(
- 'name' => 'PHP mail SMTP',
- 'mandatory' => false,
- 'condition' => strlen(ini_get('SMTP'))>0,
- 'by' => 'Email sending',
- 'memo' => 'PHP mail SMTP server required',
- ),
-);
-$requirementsChecker->checkYii()->check($requirements)->render();
diff --git a/yii/notejam/runtime/.gitignore b/yii/notejam/runtime/.gitignore
deleted file mode 100644
index c96a04f00..000000000
--- a/yii/notejam/runtime/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
\ No newline at end of file
diff --git a/yii/notejam/tests/.gitignore b/yii/notejam/tests/.gitignore
deleted file mode 100644
index c5aa0743d..000000000
--- a/yii/notejam/tests/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-# these files are auto generated by codeception build
-/unit/CodeGuy.php
-/functional/TestGuy.php
-/acceptance/WebGuy.php
diff --git a/yii/notejam/tests/README.md b/yii/notejam/tests/README.md
deleted file mode 100644
index e1aed9a6e..000000000
--- a/yii/notejam/tests/README.md
+++ /dev/null
@@ -1,33 +0,0 @@
-This folder contains various tests for the basic application.
-These tests are developed with [Codeception PHP Testing Framework](http://codeception.com/).
-
-After creating the basic application, follow these steps to prepare for the tests:
-
-1. Install additional composer packages:
-
- ```
- php composer.phar require --dev "codeception/codeception: 2.0.*" "codeception/specify: *" "codeception/verify: *"
- ```
-2. In the file `_bootstrap.php`, modify the definition of the constant `TEST_ENTRY_URL` so
- that it points to the correct entry script URL.
-3. Go to the application base directory and build the test suites:
-
- ```
- vendor/bin/codecept build
- ```
-
-Now you can run the tests with the following commands:
-
-```
-# run all available tests
-vendor/bin/codecept run
-# run acceptance tests
-vendor/bin/codecept run acceptance
-# run functional tests
-vendor/bin/codecept run functional
-# run unit tests
-vendor/bin/codecept run unit
-```
-
-Please refer to [Codeception tutorial](http://codeception.com/docs/01-Introduction) for
-more details about writing and running acceptance, functional and unit tests.
diff --git a/yii/notejam/tests/_bootstrap.php b/yii/notejam/tests/_bootstrap.php
deleted file mode 100644
index 4890b3ed7..000000000
--- a/yii/notejam/tests/_bootstrap.php
+++ /dev/null
@@ -1,23 +0,0 @@
- [
- 'mailer' => [
- 'useFileTransport' => true,
- ],
- 'urlManager' => [
- 'showScriptName' => true,
- ],
- ],
-];
diff --git a/yii/notejam/tests/_console_bootstrap.php b/yii/notejam/tests/_console_bootstrap.php
deleted file mode 100644
index 81287f3d8..000000000
--- a/yii/notejam/tests/_console_bootstrap.php
+++ /dev/null
@@ -1,12 +0,0 @@
-guy->fillField('input[name="Note[name]"]', $name);
- $this->guy->fillField('textarea[name="Note[text]"]', $text);
- $this->guy->click('button[type=submit]');
- }
-}
-
-
diff --git a/yii/notejam/tests/_pages/CreatePadPage.php b/yii/notejam/tests/_pages/CreatePadPage.php
deleted file mode 100644
index 0209fadf8..000000000
--- a/yii/notejam/tests/_pages/CreatePadPage.php
+++ /dev/null
@@ -1,17 +0,0 @@
-guy->fillField('input[name="Pad[name]"]', $name);
- $this->guy->click('button[type=submit]');
- }
-}
-
diff --git a/yii/notejam/tests/_pages/DeleteNotePage.php b/yii/notejam/tests/_pages/DeleteNotePage.php
deleted file mode 100644
index 37a7fab18..000000000
--- a/yii/notejam/tests/_pages/DeleteNotePage.php
+++ /dev/null
@@ -1,22 +0,0 @@
-guy->click('button[type=submit]');
- }
-}
-
-
-
-
-
diff --git a/yii/notejam/tests/_pages/DeletePadPage.php b/yii/notejam/tests/_pages/DeletePadPage.php
deleted file mode 100644
index c7d5f84c0..000000000
--- a/yii/notejam/tests/_pages/DeletePadPage.php
+++ /dev/null
@@ -1,21 +0,0 @@
-guy->click('button[type=submit]');
- }
-}
-
-
-
-
diff --git a/yii/notejam/tests/_pages/EditNotePage.php b/yii/notejam/tests/_pages/EditNotePage.php
deleted file mode 100644
index 2aade7f06..000000000
--- a/yii/notejam/tests/_pages/EditNotePage.php
+++ /dev/null
@@ -1,24 +0,0 @@
-guy->fillField('input[name="Note[name]"]', $name);
- $this->guy->fillField('textarea[name="Note[text]"]', $text);
- $this->guy->click('button[type=submit]');
- }
-}
-
-
-
-
diff --git a/yii/notejam/tests/_pages/EditPadPage.php b/yii/notejam/tests/_pages/EditPadPage.php
deleted file mode 100644
index 525ffef14..000000000
--- a/yii/notejam/tests/_pages/EditPadPage.php
+++ /dev/null
@@ -1,21 +0,0 @@
-guy->fillField('input[name="Pad[name]"]', $name);
- $this->guy->click('button[type=submit]');
- }
-}
-
-
-
diff --git a/yii/notejam/tests/_pages/SignedInPage.php b/yii/notejam/tests/_pages/SignedInPage.php
deleted file mode 100644
index fe3419e3e..000000000
--- a/yii/notejam/tests/_pages/SignedInPage.php
+++ /dev/null
@@ -1,31 +0,0 @@
-signin($user['email'], $user['password']);
- }
- $I->amOnPage($page->getUrl($params));
-
- return $page;
- }
-
- public static function signout($I)
- {
- $I->amOnPage(\Yii::$app->getUrlManager()->createUrl(['user/signout']));
- }
-}
-
-
-
-
-
diff --git a/yii/notejam/tests/_pages/SigninPage.php b/yii/notejam/tests/_pages/SigninPage.php
deleted file mode 100644
index 1e0e8fa1a..000000000
--- a/yii/notejam/tests/_pages/SigninPage.php
+++ /dev/null
@@ -1,24 +0,0 @@
-guy->fillField('input[name="SigninForm[email]"]', $email);
- $this->guy->fillField('input[name="SigninForm[password]"]', $password);
- $this->guy->click('button[type=submit]');
- //$this->guy->submitForm('form', array('SigninForm' => array(
- //'email' => $email,
- //'password' => $password,
- //)));
- }
-}
diff --git a/yii/notejam/tests/_pages/SignupPage.php b/yii/notejam/tests/_pages/SignupPage.php
deleted file mode 100644
index 712110231..000000000
--- a/yii/notejam/tests/_pages/SignupPage.php
+++ /dev/null
@@ -1,25 +0,0 @@
-guy->fillField('input[name="SignupForm[email]"]', $email);
- $this->guy->fillField('input[name="SignupForm[password]"]', $password);
- $this->guy->fillField(
- 'input[name="SignupForm[passwordConfirmation]"]', $passwordConfirmation
- );
- $this->guy->click('button[type=submit]');
- }
-}
-
diff --git a/yii/notejam/tests/_pages/ViewNotePage.php b/yii/notejam/tests/_pages/ViewNotePage.php
deleted file mode 100644
index 72359d26a..000000000
--- a/yii/notejam/tests/_pages/ViewNotePage.php
+++ /dev/null
@@ -1,10 +0,0 @@
- [
- 'db' => [
- 'dsn' => 'mysql:host=localhost;dbname=yii2_basic_acceptance',
- ],
- ],
- ]
-);
diff --git a/yii/notejam/tests/acceptance/_console.php b/yii/notejam/tests/acceptance/_console.php
deleted file mode 100644
index 03cdd1ff6..000000000
--- a/yii/notejam/tests/acceptance/_console.php
+++ /dev/null
@@ -1,13 +0,0 @@
- [
- 'db' => [
- 'dsn' => 'mysql:host=localhost;dbname=yii2_basic_acceptance',
- ],
- ],
- ]
-);
diff --git a/yii/notejam/tests/acceptance/yii b/yii/notejam/tests/acceptance/yii
deleted file mode 100644
index e587ba400..000000000
--- a/yii/notejam/tests/acceptance/yii
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env php
-run();
-exit($exitCode);
diff --git a/yii/notejam/tests/acceptance/yii.bat b/yii/notejam/tests/acceptance/yii.bat
deleted file mode 100644
index 5e21e2e99..000000000
--- a/yii/notejam/tests/acceptance/yii.bat
+++ /dev/null
@@ -1,20 +0,0 @@
-@echo off
-
-rem -------------------------------------------------------------
-rem Yii command line bootstrap script for Windows.
-rem
-rem @author Qiang Xue
-rem @link http://www.yiiframework.com/
-rem @copyright Copyright © 2012 Yii Software LLC
-rem @license http://www.yiiframework.com/license/
-rem -------------------------------------------------------------
-
-@setlocal
-
-set YII_PATH=%~dp0
-
-if "%PHP_COMMAND%" == "" set PHP_COMMAND=php.exe
-
-"%PHP_COMMAND%" "%YII_PATH%yii" %*
-
-@endlocal
diff --git a/yii/notejam/tests/functional.suite.yml b/yii/notejam/tests/functional.suite.yml
deleted file mode 100644
index 2da85d3d3..000000000
--- a/yii/notejam/tests/functional.suite.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-# Codeception Test Suite Configuration
-
-# suite for functional (integration) tests.
-# emulate web requests and make application process them.
-# (tip: better to use with frameworks).
-
-# RUN `build` COMMAND AFTER ADDING/REMOVING MODULES.
-#basic/web/index.php
-class_name: TestGuy
-modules:
- enabled:
- - Filesystem
- - Yii2
- #- PhpBrowser
- - Db
- config:
- Yii2:
- configFile: 'tests/functional/_config.php'
- #PhpBrowser:
- #url: 'http://localhost'
- Db:
- cleanup: true
- repopulate: true
- dsn: 'sqlite:tests/functional/notejam_test.db'
- user: ''
- password: ''
- dump: tests/_data/dump.sql
-
diff --git a/yii/notejam/tests/functional/CreateNoteCept.php b/yii/notejam/tests/functional/CreateNoteCept.php
deleted file mode 100644
index 2b28a3fd0..000000000
--- a/yii/notejam/tests/functional/CreateNoteCept.php
+++ /dev/null
@@ -1,29 +0,0 @@
-wantTo('ensure that note creation works correctly');
-
-$user = ['email' => 'exists@example.com', 'password' => '123123'];
-$notePage = CreateNotePage::openBy($I, [], $user);
-
-$I->amGoingTo('create note');
-$notePage->create('new note', 'note text');
-$I->expectTo('see success message');
-$I->see('Note is successfully created');
-
-$I->amGoingTo('create note with blank fields');
-$notePage = CreateNotePage::openBy($I, [], $user);
-$notePage->create('', '');
-$I->expectTo('see validation errors');
-$I->see('Name cannot be blank');
-$I->see('Text cannot be blank');
-
-$I->amGoingTo('create note by anonymous');
-$notePage->signout($I);
-$I->amOnPage(\Yii::$app->getUrlManager()->createUrl(['note/create']));
-$I->expectTo('be redirected to signin page');
-$I->seeInCurrentUrl('/signin');
-
-// @TODO add note not in my pad
-// $I->amGoingTo('create note by anonymous');
diff --git a/yii/notejam/tests/functional/CreatePadCept.php b/yii/notejam/tests/functional/CreatePadCept.php
deleted file mode 100644
index 5f8fcbd01..000000000
--- a/yii/notejam/tests/functional/CreatePadCept.php
+++ /dev/null
@@ -1,19 +0,0 @@
-wantTo('ensure that pad creation works correctly');
-
-$user = ['email' => 'exists@example.com', 'password' => '123123'];
-$padPage = CreatePadPage::openBy($I, [], $user);
-
-$I->amGoingTo('create pad');
-$padPage->create('new pad');
-$I->expectTo('see success message');
-$I->see('Pad is successfully created');
-
-$I->amGoingTo('create pad with blank name');
-$padPage = CreatePadPage::openBy($I, [], $user);
-$padPage->create('');
-$I->expectTo('see validation error');
-$I->see('Name cannot be blank');
diff --git a/yii/notejam/tests/functional/DeleteNoteCept.php b/yii/notejam/tests/functional/DeleteNoteCept.php
deleted file mode 100644
index 74abded19..000000000
--- a/yii/notejam/tests/functional/DeleteNoteCept.php
+++ /dev/null
@@ -1,17 +0,0 @@
-wantTo('ensure that note deletion works correctly');
-
-$user = ['email' => 'exists@example.com', 'password' => '123123'];
-$notePage = DeleteNotePage::openBy($I, ['id' => 1], $user);
-
-$I->amGoingTo('delete pad');
-$notePage->delete();
-$I->expectTo('see success message');
-$I->see('Note is successfully deleted');
-
-// @TODO
-//$I->amGoingTo('delete not my note');
-
diff --git a/yii/notejam/tests/functional/DeletePadCept.php b/yii/notejam/tests/functional/DeletePadCept.php
deleted file mode 100644
index 7ebb949cb..000000000
--- a/yii/notejam/tests/functional/DeletePadCept.php
+++ /dev/null
@@ -1,16 +0,0 @@
-wantTo('ensure that pad deletion works correctly');
-
-$user = ['email' => 'exists@example.com', 'password' => '123123'];
-$padPage = DeletePadPage::openBy($I, ['id' => 1], $user);
-
-$I->amGoingTo('delete pad');
-$padPage->delete();
-$I->expectTo('see success message');
-$I->see('Pad is successfully deleted');
-
-// @TODO
-//$I->amGoingTo('delete not my pad');
diff --git a/yii/notejam/tests/functional/EditNoteCept.php b/yii/notejam/tests/functional/EditNoteCept.php
deleted file mode 100644
index 68a360305..000000000
--- a/yii/notejam/tests/functional/EditNoteCept.php
+++ /dev/null
@@ -1,28 +0,0 @@
-wantTo('ensure that edit note works correctly');
-
-$user = ['email' => 'exists@example.com', 'password' => '123123'];
-$notePage = EditNotePage::openBy($I, ['id' => 1], $user);
-
-$I->amGoingTo('edit note');
-$newName = 'new note name';
-$newText = 'new pad text';
-$notePage->edit($newName, $newText);
-$I->expectTo('see success message');
-$I->see('Note is successfully updated');
-$I->expectTo('see new name and new text');
-$I->see($newName);
-$I->see($newText);
-
-$I->amGoingTo('edit note with blank fields');
-$notePage = EditNotePage::openBy($I, ['id' => 1], $user);
-$notePage->edit('', '');
-$I->expectTo('see validation errors');
-$I->see('Name cannot be blank');
-$I->see('Text cannot be blank');
-
-// @TODO
-//$I->amGoingTo('edit not my note');
diff --git a/yii/notejam/tests/functional/EditPadCept.php b/yii/notejam/tests/functional/EditPadCept.php
deleted file mode 100644
index 5240a26e6..000000000
--- a/yii/notejam/tests/functional/EditPadCept.php
+++ /dev/null
@@ -1,25 +0,0 @@
-wantTo('ensure that edit pad works correctly');
-
-$user = ['email' => 'exists@example.com', 'password' => '123123'];
-$padPage = EditPadPage::openBy($I, ['id' => 1], $user);
-
-$I->amGoingTo('edit pad');
-$newName = 'new pad name';
-$padPage->edit($newName);
-$I->expectTo('see success message');
-$I->see('Pad is successfully updated');
-$I->expectTo('see new name');
-$I->see($newName);
-
-$I->amGoingTo('edit pad with blank name');
-$padPage = EditPadPage::openBy($I, ['id' => 1], $user);
-$padPage->edit('');
-$I->expectTo('see validation error');
-$I->see('Name cannot be blank');
-
-// @TODO
-//$I->amGoingTo('edit not my pad');
diff --git a/yii/notejam/tests/functional/SigninCept.php b/yii/notejam/tests/functional/SigninCept.php
deleted file mode 100644
index 38df0b903..000000000
--- a/yii/notejam/tests/functional/SigninCept.php
+++ /dev/null
@@ -1,23 +0,0 @@
-wantTo('ensure that signin works correctly');
-
-$signinPage = SigninPage::openBy($I);
-
-$I->amGoingTo('sign in with empty credentials');
-$signinPage->signin('', '');
-$I->expectTo('see validations errors');
-$I->see('Email cannot be blank.');
-$I->see('Password cannot be blank.');
-
-$I->amGoingTo('sign in with wrong credentials');
-$signinPage->signin('user@example.com', 'secure');
-$I->expectTo('see error message');
-$I->see('Incorrect username or password.');
-
-$I->amGoingTo('sign in with correct credentials');
-$signinPage->signin('exists@example.com', '123123');
-$I->expectTo('see all notes title');
-$I->see('All notes');
diff --git a/yii/notejam/tests/functional/SignupCept.php b/yii/notejam/tests/functional/SignupCept.php
deleted file mode 100644
index 46f42948f..000000000
--- a/yii/notejam/tests/functional/SignupCept.php
+++ /dev/null
@@ -1,37 +0,0 @@
-wantTo('ensure that signup works correctly');
-
-$signupPage = SignupPage::openBy($I);
-
-$I->amGoingTo('sign up coreectly');
-$signupPage->signup('user@example.com', 'password', 'password');
-$I->expectTo('see success message');
-$I->see('Now you can sign in.');
-
-$I->amGoingTo('sign up with empty fields');
-$signupPage = SignupPage::openBy($I);
-$signupPage->signup('', '', '');
-$I->expectTo('see validations errors');
-$I->see('Email cannot be blank.');
-$I->see('Password cannot be blank.');
-
-$I->amGoingTo('sign up with different passwords');
-$signupPage = SignupPage::openBy($I);
-$signupPage->signup('user2@example.com', 'password', 'pa$$word');
-$I->expectTo('see password validations errors');
-$I->see("Passwords don't match");
-
-$I->amGoingTo('sign up with invalid email');
-$signupPage = SignupPage::openBy($I);
-$signupPage->signup('invalid@mail', 'password', 'password');
-$I->expectTo('see email validations error');
-$I->see("Email is not a valid email address");
-
-$I->amGoingTo('sign up with already used email');
-$signupPage = SignupPage::openBy($I);
-$signupPage->signup('exists@example.com', 'password', 'password');
-$I->expectTo('see email validations error');
-$I->see("This email address has already been taken");
diff --git a/yii/notejam/tests/functional/ViewNoteCept.php b/yii/notejam/tests/functional/ViewNoteCept.php
deleted file mode 100644
index 8a759151a..000000000
--- a/yii/notejam/tests/functional/ViewNoteCept.php
+++ /dev/null
@@ -1,16 +0,0 @@
-wantTo('ensure that note viewing works correctly');
-
-$user = ['email' => 'exists@example.com', 'password' => '123123'];
-$notePage = ViewNotePage::openBy($I, ['id' => 1], $user);
-
-$I->amGoingTo('view note');
-$I->expectTo('see note text');
-$I->see('Note text');
-
-// @TODO
-//$I->amGoingTo('view not my pad');
-
diff --git a/yii/notejam/tests/functional/ViewPadCept.php b/yii/notejam/tests/functional/ViewPadCept.php
deleted file mode 100644
index 3e9e4fe1c..000000000
--- a/yii/notejam/tests/functional/ViewPadCept.php
+++ /dev/null
@@ -1,16 +0,0 @@
-wantTo('ensure that pad viewing works correctly');
-
-$user = ['email' => 'exists@example.com', 'password' => '123123'];
-$padPage = ViewPadPage::openBy($I, ['id' => 1], $user);
-
-$I->amGoingTo('view pad');
-$I->expectTo('see pad name');
-$I->see('Pad name (1)');
-
-// @TODO
-//$I->amGoingTo('view not my pad');
-
diff --git a/yii/notejam/tests/functional/_bootstrap.php b/yii/notejam/tests/functional/_bootstrap.php
deleted file mode 100644
index 6ce3d175b..000000000
--- a/yii/notejam/tests/functional/_bootstrap.php
+++ /dev/null
@@ -1,3 +0,0 @@
- [
- 'db' => [
- 'dsn' => 'sqlite:tests/functional/notejam_test.db',
- ],
- ],
- ]
-);
diff --git a/yii/notejam/tests/functional/_console.php b/yii/notejam/tests/functional/_console.php
deleted file mode 100644
index 7c31b76e4..000000000
--- a/yii/notejam/tests/functional/_console.php
+++ /dev/null
@@ -1,13 +0,0 @@
- [
- 'db' => [
- 'dsn' => 'sqlite:tests/functional/notejam_test.db',
- ],
- ],
- ]
-);
diff --git a/yii/notejam/tests/functional/yii b/yii/notejam/tests/functional/yii
deleted file mode 100755
index e587ba400..000000000
--- a/yii/notejam/tests/functional/yii
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env php
-run();
-exit($exitCode);
diff --git a/yii/notejam/tests/functional/yii.bat b/yii/notejam/tests/functional/yii.bat
deleted file mode 100644
index 5e21e2e99..000000000
--- a/yii/notejam/tests/functional/yii.bat
+++ /dev/null
@@ -1,20 +0,0 @@
-@echo off
-
-rem -------------------------------------------------------------
-rem Yii command line bootstrap script for Windows.
-rem
-rem @author Qiang Xue
-rem @link http://www.yiiframework.com/
-rem @copyright Copyright © 2012 Yii Software LLC
-rem @license http://www.yiiframework.com/license/
-rem -------------------------------------------------------------
-
-@setlocal
-
-set YII_PATH=%~dp0
-
-if "%PHP_COMMAND%" == "" set PHP_COMMAND=php.exe
-
-"%PHP_COMMAND%" "%YII_PATH%yii" %*
-
-@endlocal
diff --git a/yii/notejam/tests/unit.suite.yml b/yii/notejam/tests/unit.suite.yml
deleted file mode 100644
index f0573a843..000000000
--- a/yii/notejam/tests/unit.suite.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-# Codeception Test Suite Configuration
-
-# suite for unit (internal) tests.
-# RUN `build` COMMAND AFTER ADDING/REMOVING MODULES.
-
-class_name: CodeGuy
diff --git a/yii/notejam/tests/unit/_bootstrap.php b/yii/notejam/tests/unit/_bootstrap.php
deleted file mode 100644
index 80cc72a4b..000000000
--- a/yii/notejam/tests/unit/_bootstrap.php
+++ /dev/null
@@ -1,3 +0,0 @@
- [
- 'db' => [
- 'dsn' => 'mysql:host=localhost;dbname=yii2_basic_unit',
- ],
- ],
- ]
-);
diff --git a/yii/notejam/tests/unit/_console.php b/yii/notejam/tests/unit/_console.php
deleted file mode 100644
index 04272a321..000000000
--- a/yii/notejam/tests/unit/_console.php
+++ /dev/null
@@ -1,13 +0,0 @@
- [
- 'db' => [
- 'dsn' => 'mysql:host=localhost;dbname=yii2_basic_unit',
- ],
- ],
- ]
-);
diff --git a/yii/notejam/tests/unit/fixtures/.gitkeep b/yii/notejam/tests/unit/fixtures/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/yii/notejam/tests/unit/fixtures/data/.gitkeep b/yii/notejam/tests/unit/fixtures/data/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/yii/notejam/tests/unit/templates/fixtures/.gitkeep b/yii/notejam/tests/unit/templates/fixtures/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/yii/notejam/tests/unit/yii b/yii/notejam/tests/unit/yii
deleted file mode 100644
index e587ba400..000000000
--- a/yii/notejam/tests/unit/yii
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env php
-run();
-exit($exitCode);
diff --git a/yii/notejam/tests/unit/yii.bat b/yii/notejam/tests/unit/yii.bat
deleted file mode 100644
index 5e21e2e99..000000000
--- a/yii/notejam/tests/unit/yii.bat
+++ /dev/null
@@ -1,20 +0,0 @@
-@echo off
-
-rem -------------------------------------------------------------
-rem Yii command line bootstrap script for Windows.
-rem
-rem @author Qiang Xue
-rem @link http://www.yiiframework.com/
-rem @copyright Copyright © 2012 Yii Software LLC
-rem @license http://www.yiiframework.com/license/
-rem -------------------------------------------------------------
-
-@setlocal
-
-set YII_PATH=%~dp0
-
-if "%PHP_COMMAND%" == "" set PHP_COMMAND=php.exe
-
-"%PHP_COMMAND%" "%YII_PATH%yii" %*
-
-@endlocal
diff --git a/yii/notejam/views/layouts/app.php b/yii/notejam/views/layouts/app.php
deleted file mode 100644
index d46851988..000000000
--- a/yii/notejam/views/layouts/app.php
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-beginBlock('pads'); ?>
-
-
My pads
-
- user->identity->pads): ?>
-
-
- No pads
-
-
- New pad
-
-
-endBlock(); ?>
-
-beginContent('@app/views/layouts/base.php'); ?>
-
-
- session->hasFlash('success')): ?>
-
= Yii::$app->session->getFlash('success') ?>
-
- session->hasFlash('error')): ?>
-
= Yii::$app->session->getFlash('success') ?>
-
-
- = $content ?>
-
-endContent(); ?>
diff --git a/yii/notejam/views/layouts/base.php b/yii/notejam/views/layouts/base.php
deleted file mode 100644
index 1986b98fb..000000000
--- a/yii/notejam/views/layouts/base.php
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- = Html::encode($this->title) ?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- = $this->blocks['pads'] ?>
-
- = $content ?>
-
-
-
-
-
-
diff --git a/yii/notejam/views/layouts/user.php b/yii/notejam/views/layouts/user.php
deleted file mode 100644
index 80a3d19fb..000000000
--- a/yii/notejam/views/layouts/user.php
+++ /dev/null
@@ -1,16 +0,0 @@
-beginBlock('pads'); ?>
-endBlock(); ?>
-
-beginContent('@app/views/layouts/base.php'); ?>
-
-
- session->hasFlash('success')): ?>
-
= Yii::$app->session->getFlash('success') ?>
-
- session->hasFlash('error')): ?>
-
= Yii::$app->session->getFlash('success') ?>
-
-
- = $content ?>
-
-endContent(); ?>
diff --git a/yii/notejam/views/note/create.php b/yii/notejam/views/note/create.php
deleted file mode 100644
index 827df734d..000000000
--- a/yii/notejam/views/note/create.php
+++ /dev/null
@@ -1,5 +0,0 @@
-title = 'New note';
-?>
-
-= $this->render('form', ['note' => $note]) ?>
diff --git a/yii/notejam/views/note/delete.php b/yii/notejam/views/note/delete.php
deleted file mode 100644
index e9f7d8d62..000000000
--- a/yii/notejam/views/note/delete.php
+++ /dev/null
@@ -1,16 +0,0 @@
-title = $note->name;
-?>
-
-
-
- Are you sure you want to delete = Html::encode($this->title) ?>?
- = Html::submitButton('Yes, delete I want to delete it', ['class' => 'red']) ?>
- Cancel
-
-
-
-
diff --git a/yii/notejam/views/note/edit.php b/yii/notejam/views/note/edit.php
deleted file mode 100644
index fa0f5970f..000000000
--- a/yii/notejam/views/note/edit.php
+++ /dev/null
@@ -1,5 +0,0 @@
-title = $note->name;
-?>
-
-= $this->render('form', ['note' => $note]) ?>
diff --git a/yii/notejam/views/note/error.php b/yii/notejam/views/note/error.php
deleted file mode 100644
index acde32607..000000000
--- a/yii/notejam/views/note/error.php
+++ /dev/null
@@ -1,22 +0,0 @@
-title = $name;
-?>
-
-
-
= Html::encode($this->title) ?>
-
-
- = nl2br(Html::encode($message)) ?>
-
-
-
- The above error occurred while the Web server was processing your request.
-
-
- Please contact us if you think this is a server error. Thank you.
-
-
-
diff --git a/yii/notejam/views/note/form.php b/yii/notejam/views/note/form.php
deleted file mode 100644
index fa4503631..000000000
--- a/yii/notejam/views/note/form.php
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
- ['class' => 'note'],
- 'fieldConfig' => [
- 'template' => "{label}{input}",
- ],
-]); ?>
-
-= $form->field($note, 'name') ?>
-= $this->render('/partials/errors', ['model' => $note, 'field' => 'name']) ?>
-
-= $form->field($note, 'text')->textArea() ?>
-= $this->render('/partials/errors', ['model' => $note, 'field' => 'text']) ?>
-
-= $form->field($note, 'pad_id')->dropDownList(ArrayHelper::map(Yii::$app->user->identity->pads, 'id', 'name'), ['prompt' => '-----------']); ?>
-= $this->render('/partials/errors', ['model' => $note, 'field' => 'pad_id']) ?>
-
-= Html::submitButton('Save') ?>
-
-
-
-
diff --git a/yii/notejam/views/note/list.php b/yii/notejam/views/note/list.php
deleted file mode 100644
index 69dae6053..000000000
--- a/yii/notejam/views/note/list.php
+++ /dev/null
@@ -1,30 +0,0 @@
-title = 'All notes(' . count($notes) . ')';
-?>
-
-
-
- Create your first note.
-
-New note
diff --git a/yii/notejam/views/note/view.php b/yii/notejam/views/note/view.php
deleted file mode 100644
index 0464ec07a..000000000
--- a/yii/notejam/views/note/view.php
+++ /dev/null
@@ -1,14 +0,0 @@
-title = $note->name;
-?>
-
-Last edited at = $note->getSmartDate(); ?>
-
-
- = HtmlPurifier::process($note->text) ?>
-
-
-Edit
-Delete it
diff --git a/yii/notejam/views/pad/create.php b/yii/notejam/views/pad/create.php
deleted file mode 100644
index e2f912cd6..000000000
--- a/yii/notejam/views/pad/create.php
+++ /dev/null
@@ -1,5 +0,0 @@
-title = 'New pad';
-?>
-
-= $this->render('form', ['pad' => $pad]) ?>
diff --git a/yii/notejam/views/pad/delete.php b/yii/notejam/views/pad/delete.php
deleted file mode 100644
index 394065403..000000000
--- a/yii/notejam/views/pad/delete.php
+++ /dev/null
@@ -1,15 +0,0 @@
-title = $pad->name;
-?>
-
-
-
- Are you sure you want to delete = Html::encode($this->title) ?>?
- = Html::submitButton('Yes, delete I want to delete it', ['class' => 'red']) ?>
- Cancel
-
-
-
diff --git a/yii/notejam/views/pad/edit.php b/yii/notejam/views/pad/edit.php
deleted file mode 100644
index 2da3170d3..000000000
--- a/yii/notejam/views/pad/edit.php
+++ /dev/null
@@ -1,5 +0,0 @@
-title = $pad->name;
-?>
-
-= $this->render('form', ['pad' => $pad]) ?>
diff --git a/yii/notejam/views/pad/form.php b/yii/notejam/views/pad/form.php
deleted file mode 100644
index 9b412788b..000000000
--- a/yii/notejam/views/pad/form.php
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
- [
- 'template' => "{label}{input}",
- ],
-]); ?>
-
-= $form->field($pad, 'name') ?>
-= $this->render('/partials/errors', ['model' => $pad, 'field' => 'name']) ?>
-
-= Html::submitButton('Save') ?>
-
- Delete pad
-
-
-
-
-
diff --git a/yii/notejam/views/pad/view.php b/yii/notejam/views/pad/view.php
deleted file mode 100644
index 95d513d69..000000000
--- a/yii/notejam/views/pad/view.php
+++ /dev/null
@@ -1,25 +0,0 @@
-title = $pad->name . ' (' . count($notes) . ')';
-?>
-
-
-
- Create first note in the pad.
-
-New note
-Pad settings
-
-
diff --git a/yii/notejam/views/partials/errors.php b/yii/notejam/views/partials/errors.php
deleted file mode 100644
index 4dfc2d36b..000000000
--- a/yii/notejam/views/partials/errors.php
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-hasErrors($field)): ?>
-
- getErrors($field) as $error): ?>
- = Html::encode($error) ?>
-
-
-
diff --git a/yii/notejam/views/user/forgot-password.php b/yii/notejam/views/user/forgot-password.php
deleted file mode 100644
index da3926060..000000000
--- a/yii/notejam/views/user/forgot-password.php
+++ /dev/null
@@ -1,21 +0,0 @@
-title = 'Forgot Password?';
-?>
-
- 'login-form',
- 'options' => ['class' => 'offset-by-six sign-in'],
- 'fieldConfig' => [
- 'template' => "{label}{input}",
- ],
-]); ?>
-
-= $form->field($model, 'email'); ?>
-= $this->render('/partials/errors', ['model' => $model, 'field' => 'email']) ?>
-
-= Html::submitButton('Generate password') ?>
-
-
-
diff --git a/yii/notejam/views/user/settings.php b/yii/notejam/views/user/settings.php
deleted file mode 100644
index 618823ff6..000000000
--- a/yii/notejam/views/user/settings.php
+++ /dev/null
@@ -1,28 +0,0 @@
-title = 'Account Settings';
-
-?>
-
- 'login-form',
- 'options' => ['class' => 'offset-by-six sign-in'],
- 'fieldConfig' => [
- 'template' => "{label}{input}",
- ],
-]); ?>
-
-= $form->field($model, 'currentPassword')->passwordInput(); ?>
-= $this->render('/partials/errors', ['model' => $model, 'field' => 'currentPassword']) ?>
-
-= $form->field($model, 'password')->passwordInput(); ?>
-= $this->render('/partials/errors', ['model' => $model, 'field' => 'password']) ?>
-
-= $form->field($model, 'passwordConfirmation')->passwordInput() ?>
-= $this->render('/partials/errors', ['model' => $model, 'field' => 'passwordConfirmation']) ?>
-
-= Html::submitButton('Save') ?>
-
-
diff --git a/yii/notejam/views/user/signin.php b/yii/notejam/views/user/signin.php
deleted file mode 100644
index e378f881e..000000000
--- a/yii/notejam/views/user/signin.php
+++ /dev/null
@@ -1,27 +0,0 @@
-title = 'Sign In';
-
-?>
-
- 'login-form',
- 'options' => ['class' => 'offset-by-six sign-in'],
- 'fieldConfig' => [
- 'template' => "{label}{input}",
- ],
-]); ?>
-
-= $form->field($model, 'email') ?>
-= $this->render('/partials/errors', ['model' => $model, 'field' => 'email']) ?>
-
-= $form->field($model, 'password')->passwordInput() ?>
-= $this->render('/partials/errors', ['model' => $model, 'field' => 'password']) ?>
-
-= Html::submitButton('Sign in') ?> or Sign up
-
-Forgot password?
-
-
diff --git a/yii/notejam/views/user/signup.php b/yii/notejam/views/user/signup.php
deleted file mode 100644
index 16010b9df..000000000
--- a/yii/notejam/views/user/signup.php
+++ /dev/null
@@ -1,28 +0,0 @@
-title = 'Sign Up';
-
-?>
-
- 'login-form',
- 'options' => ['class' => 'offset-by-six sign-in'],
- 'fieldConfig' => [
- 'template' => "{label}{input}",
- ],
-]); ?>
-
-= $form->field($model, 'email') ?>
-= $this->render('/partials/errors', ['model' => $model, 'field' => 'email']) ?>
-
-= $form->field($model, 'password')->passwordInput() ?>
-= $this->render('/partials/errors', ['model' => $model, 'field' => 'password']) ?>
-
-= $form->field($model, 'passwordConfirmation')->passwordInput() ?>
-= $this->render('/partials/errors', ['model' => $model, 'field' => 'passwordConfirmation']) ?>
-
-= Html::submitButton('Sign up') ?> or Sign in
-
-
diff --git a/yii/notejam/web/assets/.gitignore b/yii/notejam/web/assets/.gitignore
deleted file mode 100644
index c96a04f00..000000000
--- a/yii/notejam/web/assets/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
\ No newline at end of file
diff --git a/yii/notejam/web/css/site.css b/yii/notejam/web/css/site.css
deleted file mode 100644
index 698be709c..000000000
--- a/yii/notejam/web/css/site.css
+++ /dev/null
@@ -1,91 +0,0 @@
-html,
-body {
- height: 100%;
-}
-
-.wrap {
- min-height: 100%;
- height: auto;
- margin: 0 auto -60px;
- padding: 0 0 60px;
-}
-
-.wrap > .container {
- padding: 70px 15px 20px;
-}
-
-.footer {
- height: 60px;
- background-color: #f5f5f5;
- border-top: 1px solid #ddd;
- padding-top: 20px;
-}
-
-.jumbotron {
- text-align: center;
- background-color: transparent;
-}
-
-.jumbotron .btn {
- font-size: 21px;
- padding: 14px 24px;
-}
-
-.not-set {
- color: #c55;
- font-style: italic;
-}
-
-/* add sorting icons to gridview sort links */
-a.asc:after, a.desc:after {
- position: relative;
- top: 1px;
- display: inline-block;
- font-family: 'Glyphicons Halflings';
- font-style: normal;
- font-weight: normal;
- line-height: 1;
- padding-left: 5px;
-}
-
-a.asc:after {
- content: /*"\e113"*/ "\e151";
-}
-
-a.desc:after {
- content: /*"\e114"*/ "\e152";
-}
-
-.sort-numerical a.asc:after {
- content: "\e153";
-}
-
-.sort-numerical a.desc:after {
- content: "\e154";
-}
-
-.sort-ordinal a.asc:after {
- content: "\e155";
-}
-
-.sort-ordinal a.desc:after {
- content: "\e156";
-}
-
-.grid-view th {
- white-space: nowrap;
-}
-
-.hint-block {
- display: block;
- margin-top: 5px;
- color: #999;
-}
-
-.error-summary {
- color: #a94442;
- background: #fdf7f7;
- border-left: 3px solid #eed3d7;
- padding: 10px 20px;
- margin: 0 0 15px 0;
-}
diff --git a/yii/notejam/web/css/style.css b/yii/notejam/web/css/style.css
deleted file mode 100644
index f2cf7f5de..000000000
--- a/yii/notejam/web/css/style.css
+++ /dev/null
@@ -1,397 +0,0 @@
-/*
-* Skeleton V1.0.3
-* Copyright 2011, Dave Gamache
-* www.getskeleton.com
-* Free to use under the MIT license.
-* http://www.opensource.org/licenses/mit-license.php
-* 7/17/2011
-*/
-
-
-/* Documentation Styles
-================================================== */
- div.container {
- padding-top: 40px; }
-
- /* Doc nav */
- nav {
- width: 160px; }
- #logo, .bold-header {
- margin-bottom: 30px;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- letter-spacing: -1px;
- color: #555;
- font-weight: bold; }
- .bold-header span {
- font-weight: normal;
- font-size: 23px;
- }
- .bold-header a.header {
- text-decoration: none;
- color: inherit;
- }
- .bold-header span.jam {
- font-size: 46px;
- line-height: 50px;
- }
- nav ul {
- float: left; }
- nav ul li {
- display: block;
- margin-bottom: 10px; }
- nav ul li a,
- nav ul li a:visited,
- nav ul li a:active {
- font-size: 14px;
- color: #555;
- text-decoration: none;
- font-weight: bold; }
- nav ul li a:hover,
- nav ul li a:focus {
- color: #222; }
- header h1 {
- font-size: 52px;
- line-height: 61px;
- letter-spacing: -1px;
- font-weight: normal;
- font-family: "Georgia", "Times New Roman", Helvetica, Arial, sans-serif; }
- hr.large {
- border: none;
- height: 8px;
- background: #ebebeb;
- margin: 50px 0; }
- div.doc-section {
- margin: 30px 0; }
-
- #whatAndWhy .row {
- padding: 30px 0 0; }
-
- #typography blockquote {
- margin-top: 20px; }
-
- .hidden-code a {
- font-size: 12px;
- color: #999; }
- .hidden-code>div {
- display: none; }
-
-
- /* Grid */
- #grid .column,
- #grid .columns {
- background: #ddd;
- height: 25px;
- line-height: 25px;
- margin-bottom: 10px;
- text-align: center;
- text-transform: uppercase;
- color: #555;
- font-size: 12px;
- font-weight: bold;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px; }
- #grid .column:hover,
- #grid .columns:hover {
- background: #bbb;
- color: #333; }
- #grid .example-grid { overflow: hidden; }
-
- .post-button-note,
- .post-button-note a {
- font-size: 11px;
- color: #999; }
-
- #examples .four.columns a {
- text-decoration: none;
- }
- #examples .four.columns a:hover {
- text-decoration: underline;
- }
-
-
- .resize {
- position: fixed;
- bottom: 0;
- right: 0;
- height: 80px;
- width: 80px;
- background: url(images/resize.png); }
-
-
- img {
- max-width: 100%;
- height: auto; }
-
- .gist-meta { display: none !important;}
-
- ul ul ul li { margin-bottom: 3px; }
-
- .twitter-share-button { margin-bottom: -18px; }
-
- /* Table stylesheets */
- table {
- width: 100%;
- border-collapse: collapse;
- }
-
- table th, table td {
- padding: 10px 10px 9px;
- font-size: 13px;
- line-height: 18px;
- text-align: left;
- }
-
- table td {
- vertical-align: top;
- border-top: solid 1px #ddd;
- }
-
- table th {
- padding-top: 9px;
- font-weight: bold;
- vertical-align: middle;
- }
-
- table.condensed th, table.condensed td {
- padding: 5px 5px 4px;
- }
-
- table.bordered {
- border-collapse: separate;
- border: solid 1px #ddd;
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
- }
-
- table.bordered th + th,
- table.bordered th + td,
- table.bordered td + td {
- border-left: solid 1px #ddd;
- }
-
- .zebra-striped tbody tr:nth-child(odd) td,
- .zebra-striped tbody tr:nth-child(odd) th {
- background: #f5f5f5;
- }
-
-.carbonad,
-.carbonad-image,
-.carbonad-text,
-.carbonad-tag {
- background: none !important;
- border: none !important;
- margin-left: 0 !important;
-}
-.carbonad-tag {
- margin-top: 6px !important;
- padding-top: 0 !important;
-}
-.carbonad-text {
- height: auto !important;
-}
-.carbonad-image {
- margin-top: 0 !important;
-}
-
-.hidden-text {
- font-size: 12px;
- color: #999;
-}
-
-td.date, th.date {
- text-align: right;
-}
-
-td.date {
- font-style: italic;
-}
-
-form.note input[type="text"], form.note textarea {
- width: 100%;
-}
-
-form hr {
- width: 218px;
- margin: 10px 0px;
-}
-
-form.note textarea {
- height: 250px;
-}
-
-div.content-area {
- min-height: 600px;
-}
-
-hr.footer {
- margin-bottom: 10px;
-}
-
-div.footer {
- margin-bottom: 10px;
- text-align: center;
- font-size: 12px;
-}
-
-form.sign-in {
- margin: 50px 0 0 0;
-}
-
-.sort_arrow {
- text-decoration: none;
-}
-
-.sort_arrow:hover {
- text-decoration: none;
- color: red;
-}
-
-div.sign-in-out-block {
- position: absolute;
- right: 14px;
- top: 8px;
- font-size: 12px;
-}
-
-div.sign-in-out-block a {
- /*text-decoration: none;*/
-}
-
-a.small-red {
- color: red;
- font-size: 12px;
-}
-
-table.notes {
- margin: 0 0 20px 0;
-}
-
-table.notes th.note {
- width: 72%;
-}
-
-table.notes td.pad {
- color: grey;
-}
-
-table.notes td.pad a {
- color: grey;
- text-decoration: underline;
- font-style: normal;
-}
-
-
-table.notes td.pad a:hover {
- color: black;
-}
-
-p.empty {
- color: grey;
- font-style: italic;
-}
-
-a.delete-note {
- float: right;
- font-size: 12px;
- color: red;
-}
-
-.red, input.red {
- color: red !important;
-}
-
-ul.errorlist, ul.errors {
- margin: -18px 0 0 0;
-}
-
-ul.errorlist li, ul.errors li {
- color: red;
-}
-
-.alert-area {
- text-align: center;
-}
-
-.alert {
- padding: 5px 8px;
- margin: 0 0 12px 0;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
-}
-
-.alert-success {
- color: #468847;
- background-color: #dff0d8;
- border: 1px solid #d6e9c6;
-}
-
-.alert-error {
- color: #b94a48;
- background-color: #f2dede;
- border: 1px solid #eed3d7;
-}
-
- /* Mobile */
- @media only screen and (max-width: 767px) {
- header h1 { font-size: 34px; line-height: 37px; }
- nav { position: relative; }
- nav ul,
- .carbonad {
- display: none;
- }
- #logo { text-align: left; }
- #examples .four.columns {
- padding-top: 30px;
- }
- }
-
- /* Mobile Landscape */
- @media only screen and (min-width: 480px) and (max-width: 767px) {
- nav ul {
- display: none;
- }
- }
-
- /* Non 960 */
- @media only screen and (max-width: 959px) {
- #logo {
- font-size: 21px;
- margin-bottom: 15px; }
- nav .button {
- padding: 9px 20px 11px; }
- }
-
- /* iPad Portrait/Browser */
- @media only screen and (min-width: 768px) and (max-width: 959px) {
- nav {
- width: 124px; }
- }
-
- /* Mobile/Browser */
- @media only screen and (max-width: 767px) {}
-
- /* Mobile Landscape/Browser */
- @media only screen and (min-width: 480px) and (max-width: 767px) {}
-
- /* Anything smaller than standard 960 */
- @media only screen and (max-width: 959px) {}
-
-
- /* iPad Portrait Only */
- @media only screen and (min-width: 768px) and (max-width: 959px) and (max-device-width: 1000px) {}
-
- /* Mobile Only */
- @media only screen and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Mobile Landscape Only */
- @media only screen and (min-width: 480px) and (max-width: 767px) and (max-device-width: 1000px) {}
-
- /* Anything smaller than standard 960 on a device */
- @media only screen and (max-width: 959px) and (max-device-width: 1000px) {
- .resize { display: none; }
- }
-
-
diff --git a/yii/notejam/web/favicon.ico b/yii/notejam/web/favicon.ico
deleted file mode 100644
index 580ed732e..000000000
Binary files a/yii/notejam/web/favicon.ico and /dev/null differ
diff --git a/yii/notejam/web/index-test.php b/yii/notejam/web/index-test.php
deleted file mode 100644
index 326608d21..000000000
--- a/yii/notejam/web/index-test.php
+++ /dev/null
@@ -1,16 +0,0 @@
-run();
diff --git a/yii/notejam/web/index.php b/yii/notejam/web/index.php
deleted file mode 100644
index d1e070a39..000000000
--- a/yii/notejam/web/index.php
+++ /dev/null
@@ -1,12 +0,0 @@
-run();
diff --git a/yii/notejam/web/robots.txt b/yii/notejam/web/robots.txt
deleted file mode 100644
index 6f27bb66a..000000000
--- a/yii/notejam/web/robots.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-User-agent: *
-Disallow:
\ No newline at end of file
diff --git a/yii/notejam/yii b/yii/notejam/yii
deleted file mode 100755
index b032ebdbc..000000000
--- a/yii/notejam/yii
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env php
-run();
-exit($exitCode);
diff --git a/yii/notejam/yii.bat b/yii/notejam/yii.bat
deleted file mode 100644
index 5e21e2e99..000000000
--- a/yii/notejam/yii.bat
+++ /dev/null
@@ -1,20 +0,0 @@
-@echo off
-
-rem -------------------------------------------------------------
-rem Yii command line bootstrap script for Windows.
-rem
-rem @author Qiang Xue
-rem @link http://www.yiiframework.com/
-rem @copyright Copyright © 2012 Yii Software LLC
-rem @license http://www.yiiframework.com/license/
-rem -------------------------------------------------------------
-
-@setlocal
-
-set YII_PATH=%~dp0
-
-if "%PHP_COMMAND%" == "" set PHP_COMMAND=php.exe
-
-"%PHP_COMMAND%" "%YII_PATH%yii" %*
-
-@endlocal