├── .gitattributes
├── .gitignore
├── .htaccess
├── CONTRIBUTING.md
├── README.md
├── app
├── .htaccess
├── commands
│ ├── .gitkeep
│ └── Ticket.php
├── config
│ ├── app.php
│ ├── auth.php
│ ├── cache.php
│ ├── compile.php
│ ├── database.php
│ ├── local
│ │ ├── app.php
│ │ └── database.php
│ ├── mail.php
│ ├── packages
│ │ └── .gitkeep
│ ├── queue.php
│ ├── remote.php
│ ├── services.php
│ ├── session.php
│ ├── testing
│ │ ├── cache.php
│ │ └── session.php
│ ├── view.php
│ └── workbench.php
├── controllers
│ ├── .gitkeep
│ ├── BaseController.php
│ ├── DashboardController.php
│ ├── HomeController.php
│ └── TicketCreatedHandler.php
├── database
│ ├── .gitignore
│ ├── migrations
│ │ ├── .gitkeep
│ │ ├── 2014_07_03_190600_ProjectsModel.php
│ │ ├── 2014_07_04_183354_ConvoModel.php
│ │ ├── 2014_07_06_075603_TicketsModel.php
│ │ └── 2015_01_28_173350_TicketsModel.php
│ ├── production.sqlite
│ └── seeds
│ │ ├── .gitkeep
│ │ └── DatabaseSeeder.php
├── filters.php
├── lang
│ └── en
│ │ ├── pagination.php
│ │ ├── reminders.php
│ │ └── validation.php
├── libraries
│ └── HelperFunc.php
├── models
│ ├── ConvoModel.php
│ ├── LoginHistory.php
│ ├── ProjectMember.php
│ ├── ProjectsModel.php
│ ├── TicketsModel.php
│ └── User.php
├── routes.php
├── start
│ ├── artisan.php
│ ├── global.php
│ └── local.php
├── storage
│ ├── .gitignore
│ ├── cache
│ │ └── .gitignore
│ ├── logs
│ │ └── .gitignore
│ ├── meta
│ │ └── .gitignore
│ ├── sessions
│ │ └── .gitignore
│ └── views
│ │ └── .gitignore
├── tests
│ ├── ExampleTest.php
│ └── TestCase.php
└── views
│ ├── access_denied.blade.php
│ ├── add_project.blade.php
│ ├── add_user.blade.php
│ ├── admin_email.blade.php
│ ├── charts.blade.php
│ ├── create_ticket.blade.php
│ ├── dashboard.blade.php
│ ├── edit_project.blade.php
│ ├── edit_ticket.blade.php
│ ├── edit_user.blade.php
│ ├── email_template
│ ├── project_add_member.blade.php
│ ├── task_complete.blade.php
│ └── task_email.blade.php
│ ├── emails
│ └── auth
│ │ └── reminder.blade.php
│ ├── error404.blade.php
│ ├── hello.php
│ ├── layouts
│ ├── master-child.blade.php
│ └── master.blade.php
│ ├── list_project_member.blade.php
│ ├── list_projects.blade.php
│ ├── list_tickets.blade.php
│ ├── list_users.blade.php
│ ├── login.blade.php
│ ├── project_member.blade.php
│ ├── show_ticket.blade.php
│ ├── time_tracking.blade.php
│ └── welcome.blade.php
├── artisan
├── bootstrap
├── Untitled-1.html
├── autoload.php
├── paths.php
└── start.php
├── composer.json
├── css
├── bootstrap.css
├── bootstrap.min.css
├── css
│ ├── font-awesome.css
│ └── font-awesome.min.css
├── fonts
│ ├── FontAwesome.otf
│ ├── fontawesome-webfont.eot
│ ├── fontawesome-webfont.svg
│ ├── fontawesome-webfont.ttf
│ └── fontawesome-webfont.woff
├── fullcalendar.css
├── fullcalendar.print.css
├── login.css
└── sb-admin.css
├── favicon.ico
├── images
└── ajax-loader.gif
├── index.php
├── js
├── bootstrap.js
├── bootstrap.min.js
├── flot
│ ├── chart-data-flot.js
│ ├── excanvas.min.js
│ ├── jquery.flot.js
│ ├── jquery.flot.pie.js
│ ├── jquery.flot.resize.js
│ └── jquery.flot.tooltip.min.js
├── fullcalendar.js
├── fullcalendar.min.js
├── init.js
├── jquery.min.js
├── moment.min.js
├── morris
│ ├── chart-data-morris.js
│ └── morris-0.4.3.min.js
├── raphael.min.js
└── tablesorter
│ ├── tables.js
│ └── tablesorter.js
├── packages
└── .gitkeep
├── phpunit.xml
├── public
├── .htaccess
├── favicon.ico
├── index.php
├── packages
│ └── .gitkeep
└── robots.txt
├── readme.md
├── robots.txt
└── server.php
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /.idea
2 | /bootstrap/compiled.php
3 | /vendor
4 | composer.phar
5 | composer.lock
6 | .env.*.php
7 | .env.php
8 | .DS_Store
9 | Thumbs.db
10 |
--------------------------------------------------------------------------------
/.htaccess:
--------------------------------------------------------------------------------
1 |
2 |
3 | Options -MultiViews
4 |
5 |
6 | RewriteEngine On
7 |
8 | # Redirect Trailing Slashes...
9 | RewriteRule ^(.*)/$ /$1 [L,R=301]
10 |
11 | # Handle Front Controller...
12 | RewriteCond %{REQUEST_FILENAME} !-d
13 | RewriteCond %{REQUEST_FILENAME} !-f
14 | RewriteRule ^ index.php [L]
15 |
16 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contribution Guidelines
2 |
3 | Please submit all issues and pull requests to the [laravel/framework](http://github.com/laravel/framework) repository!
4 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ticket-management-system
2 |
--------------------------------------------------------------------------------
/app/.htaccess:
--------------------------------------------------------------------------------
1 | Deny From All
--------------------------------------------------------------------------------
/app/commands/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Webxity/ticket-management-system/3d8ee10d13b347b14e7e0b94c6549fe4b36d58aa/app/commands/.gitkeep
--------------------------------------------------------------------------------
/app/commands/Ticket.php:
--------------------------------------------------------------------------------
1 | true,
17 |
18 | /*
19 | |--------------------------------------------------------------------------
20 | | Application URL
21 | |--------------------------------------------------------------------------
22 | |
23 | | This URL is used by the console to properly generate URLs when using
24 | | the Artisan command line tool. You should set this to the root of
25 | | your application so that it is used when running Artisan tasks.
26 | |
27 | */
28 |
29 | 'url' => 'http://localhost/ticket-management-system',
30 |
31 | /*
32 | |--------------------------------------------------------------------------
33 | | Application Timezone
34 | |--------------------------------------------------------------------------
35 | |
36 | | Here you may specify the default timezone for your application, which
37 | | will be used by the PHP date and date-time functions. We have gone
38 | | ahead and set this to a sensible default for you out of the box.
39 | |
40 | */
41 |
42 | 'timezone' => 'Asia/Karachi',
43 |
44 | /*
45 | |--------------------------------------------------------------------------
46 | | Application Locale Configuration
47 | |--------------------------------------------------------------------------
48 | |
49 | | The application locale determines the default locale that will be used
50 | | by the translation service provider. You are free to set this value
51 | | to any of the locales which will be supported by the application.
52 | |
53 | */
54 |
55 | 'locale' => 'en',
56 |
57 | /*
58 | |--------------------------------------------------------------------------
59 | | Application Fallback Locale
60 | |--------------------------------------------------------------------------
61 | |
62 | | The fallback locale determines the locale to use when the current one
63 | | is not available. You may change the value to correspond to any of
64 | | the language folders that are provided through your application.
65 | |
66 | */
67 |
68 | 'fallback_locale' => 'en',
69 |
70 | /*
71 | |--------------------------------------------------------------------------
72 | | Encryption Key
73 | |--------------------------------------------------------------------------
74 | |
75 | | This key is used by the Illuminate encrypter service and should be set
76 | | to a random, 32 character string, otherwise these encrypted strings
77 | | will not be safe. Please do this before deploying an application!
78 | |
79 | */
80 |
81 | 'key' => 'YourSecretKey!!!',
82 |
83 | 'cipher' => MCRYPT_RIJNDAEL_128,
84 |
85 | /*
86 | |--------------------------------------------------------------------------
87 | | Autoloaded Service Providers
88 | |--------------------------------------------------------------------------
89 | |
90 | | The service providers listed here will be automatically loaded on the
91 | | request to your application. Feel free to add your own services to
92 | | this array to grant expanded functionality to your applications.
93 | |
94 | */
95 |
96 | 'providers' => array(
97 |
98 | 'Illuminate\Foundation\Providers\ArtisanServiceProvider',
99 | 'Illuminate\Auth\AuthServiceProvider',
100 | 'Illuminate\Cache\CacheServiceProvider',
101 | 'Illuminate\Session\CommandsServiceProvider',
102 | 'Illuminate\Foundation\Providers\ConsoleSupportServiceProvider',
103 | 'Illuminate\Routing\ControllerServiceProvider',
104 | 'Illuminate\Cookie\CookieServiceProvider',
105 | 'Illuminate\Database\DatabaseServiceProvider',
106 | 'Illuminate\Encryption\EncryptionServiceProvider',
107 | 'Illuminate\Filesystem\FilesystemServiceProvider',
108 | 'Illuminate\Hashing\HashServiceProvider',
109 | 'Illuminate\Html\HtmlServiceProvider',
110 | 'Illuminate\Log\LogServiceProvider',
111 | 'Illuminate\Mail\MailServiceProvider',
112 | 'Illuminate\Database\MigrationServiceProvider',
113 | 'Illuminate\Pagination\PaginationServiceProvider',
114 | 'Illuminate\Queue\QueueServiceProvider',
115 | 'Illuminate\Redis\RedisServiceProvider',
116 | 'Illuminate\Remote\RemoteServiceProvider',
117 | 'Illuminate\Auth\Reminders\ReminderServiceProvider',
118 | 'Illuminate\Database\SeedServiceProvider',
119 | 'Illuminate\Session\SessionServiceProvider',
120 | 'Illuminate\Translation\TranslationServiceProvider',
121 | 'Illuminate\Validation\ValidationServiceProvider',
122 | 'Illuminate\View\ViewServiceProvider',
123 | 'Illuminate\Workbench\WorkbenchServiceProvider',
124 |
125 | ),
126 |
127 | /*
128 | |--------------------------------------------------------------------------
129 | | Service Provider Manifest
130 | |--------------------------------------------------------------------------
131 | |
132 | | The service provider manifest is used by Laravel to lazy load service
133 | | providers which are not needed for each request, as well to keep a
134 | | list of all of the services. Here, you may set its storage spot.
135 | |
136 | */
137 |
138 | 'manifest' => storage_path().'/meta',
139 |
140 | /*
141 | |--------------------------------------------------------------------------
142 | | Class Aliases
143 | |--------------------------------------------------------------------------
144 | |
145 | | This array of class aliases will be registered when this application
146 | | is started. However, feel free to register as many as you wish as
147 | | the aliases are "lazy" loaded so they don't hinder performance.
148 | |
149 | */
150 |
151 | 'aliases' => array(
152 |
153 | 'App' => 'Illuminate\Support\Facades\App',
154 | 'Artisan' => 'Illuminate\Support\Facades\Artisan',
155 | 'Auth' => 'Illuminate\Support\Facades\Auth',
156 | 'Blade' => 'Illuminate\Support\Facades\Blade',
157 | 'Cache' => 'Illuminate\Support\Facades\Cache',
158 | 'ClassLoader' => 'Illuminate\Support\ClassLoader',
159 | 'Config' => 'Illuminate\Support\Facades\Config',
160 | 'Controller' => 'Illuminate\Routing\Controller',
161 | 'Cookie' => 'Illuminate\Support\Facades\Cookie',
162 | 'Crypt' => 'Illuminate\Support\Facades\Crypt',
163 | 'DB' => 'Illuminate\Support\Facades\DB',
164 | 'Eloquent' => 'Illuminate\Database\Eloquent\Model',
165 | 'Event' => 'Illuminate\Support\Facades\Event',
166 | 'File' => 'Illuminate\Support\Facades\File',
167 | 'Form' => 'Illuminate\Support\Facades\Form',
168 | 'Hash' => 'Illuminate\Support\Facades\Hash',
169 | 'HTML' => 'Illuminate\Support\Facades\HTML',
170 | 'Input' => 'Illuminate\Support\Facades\Input',
171 | 'Lang' => 'Illuminate\Support\Facades\Lang',
172 | 'Log' => 'Illuminate\Support\Facades\Log',
173 | 'Mail' => 'Illuminate\Support\Facades\Mail',
174 | 'Paginator' => 'Illuminate\Support\Facades\Paginator',
175 | 'Password' => 'Illuminate\Support\Facades\Password',
176 | 'Queue' => 'Illuminate\Support\Facades\Queue',
177 | 'Redirect' => 'Illuminate\Support\Facades\Redirect',
178 | 'Redis' => 'Illuminate\Support\Facades\Redis',
179 | 'Request' => 'Illuminate\Support\Facades\Request',
180 | 'Response' => 'Illuminate\Support\Facades\Response',
181 | 'Route' => 'Illuminate\Support\Facades\Route',
182 | 'Schema' => 'Illuminate\Support\Facades\Schema',
183 | 'Seeder' => 'Illuminate\Database\Seeder',
184 | 'Session' => 'Illuminate\Support\Facades\Session',
185 | 'SoftDeletingTrait' => 'Illuminate\Database\Eloquent\SoftDeletingTrait',
186 | 'SSH' => 'Illuminate\Support\Facades\SSH',
187 | 'Str' => 'Illuminate\Support\Str',
188 | 'URL' => 'Illuminate\Support\Facades\URL',
189 | 'Validator' => 'Illuminate\Support\Facades\Validator',
190 | 'View' => 'Illuminate\Support\Facades\View',
191 |
192 | ),
193 |
194 | );
195 |
--------------------------------------------------------------------------------
/app/config/auth.php:
--------------------------------------------------------------------------------
1 | 'eloquent',
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Authentication Model
23 | |--------------------------------------------------------------------------
24 | |
25 | | When using the "Eloquent" authentication driver, we need to know which
26 | | Eloquent model should be used to retrieve your users. Of course, it
27 | | is often just the "User" model but you may use whatever you like.
28 | |
29 | */
30 |
31 | 'model' => 'User',
32 |
33 | /*
34 | |--------------------------------------------------------------------------
35 | | Authentication Table
36 | |--------------------------------------------------------------------------
37 | |
38 | | When using the "Database" authentication driver, we need to know which
39 | | table should be used to retrieve your users. We have chosen a basic
40 | | default value but you may easily change it to any table you like.
41 | |
42 | */
43 |
44 | 'table' => 'users',
45 |
46 | /*
47 | |--------------------------------------------------------------------------
48 | | Password Reminder Settings
49 | |--------------------------------------------------------------------------
50 | |
51 | | Here you may set the settings for password reminders, including a view
52 | | that should be used as your password reminder e-mail. You will also
53 | | be able to set the name of the table that holds the reset tokens.
54 | |
55 | | The "expire" time is the number of minutes that the reminder should be
56 | | considered valid. This security feature keeps tokens short-lived so
57 | | they have less time to be guessed. You may change this as needed.
58 | |
59 | */
60 |
61 | 'reminder' => array(
62 |
63 | 'email' => 'emails.auth.reminder',
64 |
65 | 'table' => 'password_reminders',
66 |
67 | 'expire' => 60,
68 |
69 | ),
70 |
71 | );
72 |
--------------------------------------------------------------------------------
/app/config/cache.php:
--------------------------------------------------------------------------------
1 | 'file',
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | File Cache Location
23 | |--------------------------------------------------------------------------
24 | |
25 | | When using the "file" cache driver, we need a location where the cache
26 | | files may be stored. A sensible default has been specified, but you
27 | | are free to change it to any other place on disk that you desire.
28 | |
29 | */
30 |
31 | 'path' => storage_path().'/cache',
32 |
33 | /*
34 | |--------------------------------------------------------------------------
35 | | Database Cache Connection
36 | |--------------------------------------------------------------------------
37 | |
38 | | When using the "database" cache driver you may specify the connection
39 | | that should be used to store the cached items. When this option is
40 | | null the default database connection will be utilized for cache.
41 | |
42 | */
43 |
44 | 'connection' => null,
45 |
46 | /*
47 | |--------------------------------------------------------------------------
48 | | Database Cache Table
49 | |--------------------------------------------------------------------------
50 | |
51 | | When using the "database" cache driver we need to know the table that
52 | | should be used to store the cached items. A default table name has
53 | | been provided but you're free to change it however you deem fit.
54 | |
55 | */
56 |
57 | 'table' => 'cache',
58 |
59 | /*
60 | |--------------------------------------------------------------------------
61 | | Memcached Servers
62 | |--------------------------------------------------------------------------
63 | |
64 | | Now you may specify an array of your Memcached servers that should be
65 | | used when utilizing the Memcached cache driver. All of the servers
66 | | should contain a value for "host", "port", and "weight" options.
67 | |
68 | */
69 |
70 | 'memcached' => array(
71 |
72 | array('host' => '127.0.0.1', 'port' => 11211, 'weight' => 100),
73 |
74 | ),
75 |
76 | /*
77 | |--------------------------------------------------------------------------
78 | | Cache Key Prefix
79 | |--------------------------------------------------------------------------
80 | |
81 | | When utilizing a RAM based store such as APC or Memcached, there might
82 | | be other applications utilizing the same cache. So, we'll specify a
83 | | value to get prefixed to all our keys so we can avoid collisions.
84 | |
85 | */
86 |
87 | 'prefix' => 'laravel',
88 |
89 | );
90 |
--------------------------------------------------------------------------------
/app/config/compile.php:
--------------------------------------------------------------------------------
1 | PDO::FETCH_CLASS,
17 |
18 | /*
19 | |--------------------------------------------------------------------------
20 | | Default Database Connection Name
21 | |--------------------------------------------------------------------------
22 | |
23 | | Here you may specify which of the database connections below you wish
24 | | to use as your default connection for all database work. Of course
25 | | you may use many connections at once using the Database library.
26 | |
27 | */
28 |
29 | 'default' => 'mysql',
30 |
31 | /*
32 | |--------------------------------------------------------------------------
33 | | Database Connections
34 | |--------------------------------------------------------------------------
35 | |
36 | | Here are each of the database connections setup for your application.
37 | | Of course, examples of configuring each database platform that is
38 | | supported by Laravel is shown below to make development simple.
39 | |
40 | |
41 | | All database work in Laravel is done through the PHP PDO facilities
42 | | so make sure you have the driver for your particular database of
43 | | choice installed on your machine before you begin development.
44 | |
45 | */
46 |
47 | 'connections' => array(
48 |
49 | 'sqlite' => array(
50 | 'driver' => 'sqlite',
51 | 'database' => __DIR__.'/../database/production.sqlite',
52 | 'prefix' => '',
53 | ),
54 |
55 | 'mysql' => array(
56 | 'driver' => 'mysql',
57 | 'host' => 'localhost',
58 | 'database' => 'tms',
59 | 'username' => 'root',
60 | 'password' => '',
61 | 'charset' => 'utf8',
62 | 'collation' => 'utf8_general_ci',
63 | 'prefix' => '',
64 | ),
65 |
66 | 'pgsql' => array(
67 | 'driver' => 'pgsql',
68 | 'host' => 'localhost',
69 | 'database' => 'forge',
70 | 'username' => 'forge',
71 | 'password' => '',
72 | 'charset' => 'utf8',
73 | 'prefix' => '',
74 | 'schema' => 'public',
75 | ),
76 |
77 | 'sqlsrv' => array(
78 | 'driver' => 'sqlsrv',
79 | 'host' => 'localhost',
80 | 'database' => 'database',
81 | 'username' => 'root',
82 | 'password' => '',
83 | 'prefix' => '',
84 | ),
85 |
86 | ),
87 |
88 | /*
89 | |--------------------------------------------------------------------------
90 | | Migration Repository Table
91 | |--------------------------------------------------------------------------
92 | |
93 | | This table keeps track of all the migrations that have already run for
94 | | your application. Using this information, we can determine which of
95 | | the migrations on disk haven't actually been run in the database.
96 | |
97 | */
98 |
99 | 'migrations' => 'migrations',
100 |
101 | /*
102 | |--------------------------------------------------------------------------
103 | | Redis Databases
104 | |--------------------------------------------------------------------------
105 | |
106 | | Redis is an open source, fast, and advanced key-value store that also
107 | | provides a richer set of commands than a typical key-value systems
108 | | such as APC or Memcached. Laravel makes it easy to dig right in.
109 | |
110 | */
111 |
112 | 'redis' => array(
113 |
114 | 'cluster' => false,
115 |
116 | 'default' => array(
117 | 'host' => '127.0.0.1',
118 | 'port' => 6379,
119 | 'database' => 0,
120 | ),
121 |
122 | ),
123 |
124 | );
125 |
--------------------------------------------------------------------------------
/app/config/local/app.php:
--------------------------------------------------------------------------------
1 | true,
17 |
18 | );
19 |
--------------------------------------------------------------------------------
/app/config/local/database.php:
--------------------------------------------------------------------------------
1 | array(
22 |
23 | 'mysql' => array(
24 | 'driver' => 'mysql',
25 | 'host' => 'localhost',
26 | 'database' => 'tms',
27 | 'username' => 'root',
28 | 'password' => '',
29 | 'charset' => 'utf8',
30 | 'collation' => 'utf8_unicode_ci',
31 | 'prefix' => '',
32 | ),
33 |
34 | 'pgsql' => array(
35 | 'driver' => 'pgsql',
36 | 'host' => 'localhost',
37 | 'database' => 'homestead',
38 | 'username' => 'homestead',
39 | 'password' => 'secret',
40 | 'charset' => 'utf8',
41 | 'prefix' => '',
42 | 'schema' => 'public',
43 | ),
44 |
45 | ),
46 |
47 | );
48 |
--------------------------------------------------------------------------------
/app/config/mail.php:
--------------------------------------------------------------------------------
1 | 'smtp',
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | SMTP Host Address
23 | |--------------------------------------------------------------------------
24 | |
25 | | Here you may provide the host address of the SMTP server used by your
26 | | applications. A default option is provided that is compatible with
27 | | the Mailgun mail service which will provide reliable deliveries.
28 | |
29 | */
30 |
31 | 'host' => 'smtp.gmail.com',
32 |
33 | /*
34 | |--------------------------------------------------------------------------
35 | | SMTP Host Port
36 | |--------------------------------------------------------------------------
37 | |
38 | | This is the SMTP port used by your application to deliver e-mails to
39 | | users of the application. Like the host we have set this value to
40 | | stay compatible with the Mailgun e-mail application by default.
41 | |
42 | */
43 |
44 | 'port' => 587,
45 |
46 | /*
47 | |--------------------------------------------------------------------------
48 | | Global "From" Address
49 | |--------------------------------------------------------------------------
50 | |
51 | | You may wish for all e-mails sent by your application to be sent from
52 | | the same address. Here, you may specify a name and address that is
53 | | used globally for all e-mails that are sent by your application.
54 | |
55 | */
56 |
57 | 'from' => array('address' => 'NoReplay@webxity.com', 'name' => 'Webxity'),
58 |
59 | /*
60 | |--------------------------------------------------------------------------
61 | | E-Mail Encryption Protocol
62 | |--------------------------------------------------------------------------
63 | |
64 | | Here you may specify the encryption protocol that should be used when
65 | | the application send e-mail messages. A sensible default using the
66 | | transport layer security protocol should provide great security.
67 | |
68 | */
69 |
70 | 'encryption' => 'tls',
71 |
72 | /*
73 | |--------------------------------------------------------------------------
74 | | SMTP Server Username
75 | |--------------------------------------------------------------------------
76 | |
77 | | If your SMTP server requires a username for authentication, you should
78 | | set it here. This will get used to authenticate with your server on
79 | | connection. You may also set the "password" value below this one.
80 | |
81 | */
82 |
83 | 'username' => 'aloneprince595@gmail.com',
84 |
85 | /*
86 | |--------------------------------------------------------------------------
87 | | SMTP Server Password
88 | |--------------------------------------------------------------------------
89 | |
90 | | Here you may set the password required by your SMTP server to send out
91 | | messages from your application. This will be given to the server on
92 | | connection so that the application will be able to send messages.
93 | |
94 | */
95 |
96 | 'password' => 'RAza0324',
97 |
98 | /*
99 | |--------------------------------------------------------------------------
100 | | Sendmail System Path
101 | |--------------------------------------------------------------------------
102 | |
103 | | When using the "sendmail" driver to send e-mails, we will need to know
104 | | the path to where Sendmail lives on this server. A default path has
105 | | been provided here, which will work well on most of your systems.
106 | |
107 | */
108 |
109 | 'sendmail' => '/usr/sbin/sendmail -bs',
110 |
111 | /*
112 | |--------------------------------------------------------------------------
113 | | Mail "Pretend"
114 | |--------------------------------------------------------------------------
115 | |
116 | | When this option is enabled, e-mail will not actually be sent over the
117 | | web and will instead be written to your application's logs files so
118 | | you may inspect the message. This is great for local development.
119 | |
120 | */
121 |
122 | 'pretend' => false,
123 |
124 | );
125 |
--------------------------------------------------------------------------------
/app/config/packages/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Webxity/ticket-management-system/3d8ee10d13b347b14e7e0b94c6549fe4b36d58aa/app/config/packages/.gitkeep
--------------------------------------------------------------------------------
/app/config/queue.php:
--------------------------------------------------------------------------------
1 | 'sync',
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Queue Connections
23 | |--------------------------------------------------------------------------
24 | |
25 | | Here you may configure the connection information for each server that
26 | | is used by your application. A default configuration has been added
27 | | for each back-end shipped with Laravel. You are free to add more.
28 | |
29 | */
30 |
31 | 'connections' => array(
32 |
33 | 'sync' => array(
34 | 'driver' => 'sync',
35 | ),
36 |
37 | 'beanstalkd' => array(
38 | 'driver' => 'beanstalkd',
39 | 'host' => 'localhost',
40 | 'queue' => 'default',
41 | 'ttr' => 60,
42 | ),
43 |
44 | 'sqs' => array(
45 | 'driver' => 'sqs',
46 | 'key' => 'your-public-key',
47 | 'secret' => 'your-secret-key',
48 | 'queue' => 'your-queue-url',
49 | 'region' => 'us-east-1',
50 | ),
51 |
52 | 'iron' => array(
53 | 'driver' => 'iron',
54 | 'host' => 'mq-aws-us-east-1.iron.io',
55 | 'token' => 'your-token',
56 | 'project' => 'your-project-id',
57 | 'queue' => 'your-queue-name',
58 | 'encrypt' => true,
59 | ),
60 |
61 | 'redis' => array(
62 | 'driver' => 'redis',
63 | 'queue' => 'default',
64 | ),
65 |
66 | ),
67 |
68 | /*
69 | |--------------------------------------------------------------------------
70 | | Failed Queue Jobs
71 | |--------------------------------------------------------------------------
72 | |
73 | | These options configure the behavior of failed queue job logging so you
74 | | can control which database and table are used to store the jobs that
75 | | have failed. You may change them to any database / table you wish.
76 | |
77 | */
78 |
79 | 'failed' => array(
80 |
81 | 'database' => 'mysql', 'table' => 'failed_jobs',
82 |
83 | ),
84 |
85 | );
86 |
--------------------------------------------------------------------------------
/app/config/remote.php:
--------------------------------------------------------------------------------
1 | 'production',
17 |
18 | /*
19 | |--------------------------------------------------------------------------
20 | | Remote Server Connections
21 | |--------------------------------------------------------------------------
22 | |
23 | | These are the servers that will be accessible via the SSH task runner
24 | | facilities of Laravel. This feature radically simplifies executing
25 | | tasks on your servers, such as deploying out these applications.
26 | |
27 | */
28 |
29 | 'connections' => array(
30 |
31 | 'production' => array(
32 | 'host' => '',
33 | 'username' => '',
34 | 'password' => '',
35 | 'key' => '',
36 | 'keyphrase' => '',
37 | 'root' => '/var/www',
38 | ),
39 |
40 | ),
41 |
42 | /*
43 | |--------------------------------------------------------------------------
44 | | Remote Server Groups
45 | |--------------------------------------------------------------------------
46 | |
47 | | Here you may list connections under a single group name, which allows
48 | | you to easily access all of the servers at once using a short name
49 | | that is extremely easy to remember, such as "web" or "database".
50 | |
51 | */
52 |
53 | 'groups' => array(
54 |
55 | 'web' => array('production')
56 |
57 | ),
58 |
59 | );
60 |
--------------------------------------------------------------------------------
/app/config/services.php:
--------------------------------------------------------------------------------
1 | array(
18 | 'domain' => '',
19 | 'secret' => '',
20 | ),
21 |
22 | 'mandrill' => array(
23 | 'secret' => '',
24 | ),
25 |
26 | 'stripe' => array(
27 | 'model' => 'User',
28 | 'secret' => '',
29 | ),
30 |
31 | );
32 |
--------------------------------------------------------------------------------
/app/config/session.php:
--------------------------------------------------------------------------------
1 | 'file',
20 |
21 | /*
22 | |--------------------------------------------------------------------------
23 | | Session Lifetime
24 | |--------------------------------------------------------------------------
25 | |
26 | | Here you may specify the number of minutes that you wish the session
27 | | to be allowed to remain idle before it expires. If you want them
28 | | to immediately expire on the browser closing, set that option.
29 | |
30 | */
31 |
32 | 'lifetime' => 12000000000,
33 |
34 | 'expire_on_close' => false,
35 |
36 | /*
37 | |--------------------------------------------------------------------------
38 | | Session File Location
39 | |--------------------------------------------------------------------------
40 | |
41 | | When using the native session driver, we need a location where session
42 | | files may be stored. A default has been set for you but a different
43 | | location may be specified. This is only needed for file sessions.
44 | |
45 | */
46 |
47 | 'files' => storage_path().'/sessions',
48 |
49 | /*
50 | |--------------------------------------------------------------------------
51 | | Session Database Connection
52 | |--------------------------------------------------------------------------
53 | |
54 | | When using the "database" or "redis" session drivers, you may specify a
55 | | connection that should be used to manage these sessions. This should
56 | | correspond to a connection in your database configuration options.
57 | |
58 | */
59 |
60 | 'connection' => null,
61 |
62 | /*
63 | |--------------------------------------------------------------------------
64 | | Session Database Table
65 | |--------------------------------------------------------------------------
66 | |
67 | | When using the "database" session driver, you may specify the table we
68 | | should use to manage the sessions. Of course, a sensible default is
69 | | provided for you; however, you are free to change this as needed.
70 | |
71 | */
72 |
73 | 'table' => 'sessions',
74 |
75 | /*
76 | |--------------------------------------------------------------------------
77 | | Session Sweeping Lottery
78 | |--------------------------------------------------------------------------
79 | |
80 | | Some session drivers must manually sweep their storage location to get
81 | | rid of old sessions from storage. Here are the chances that it will
82 | | happen on a given request. By default, the odds are 2 out of 100.
83 | |
84 | */
85 |
86 | 'lottery' => array(2, 100),
87 |
88 | /*
89 | |--------------------------------------------------------------------------
90 | | Session Cookie Name
91 | |--------------------------------------------------------------------------
92 | |
93 | | Here you may change the name of the cookie used to identify a session
94 | | instance by ID. The name specified here will get used every time a
95 | | new session cookie is created by the framework for every driver.
96 | |
97 | */
98 |
99 | 'cookie' => 'laravel_session',
100 |
101 | /*
102 | |--------------------------------------------------------------------------
103 | | Session Cookie Path
104 | |--------------------------------------------------------------------------
105 | |
106 | | The session cookie path determines the path for which the cookie will
107 | | be regarded as available. Typically, this will be the root path of
108 | | your application but you are free to change this when necessary.
109 | |
110 | */
111 |
112 | 'path' => '/',
113 |
114 | /*
115 | |--------------------------------------------------------------------------
116 | | Session Cookie Domain
117 | |--------------------------------------------------------------------------
118 | |
119 | | Here you may change the domain of the cookie used to identify a session
120 | | in your application. This will determine which domains the cookie is
121 | | available to in your application. A sensible default has been set.
122 | |
123 | */
124 |
125 | 'domain' => null,
126 |
127 | /*
128 | |--------------------------------------------------------------------------
129 | | HTTPS Only Cookies
130 | |--------------------------------------------------------------------------
131 | |
132 | | By setting this option to true, session cookies will only be sent back
133 | | to the server if the browser has a HTTPS connection. This will keep
134 | | the cookie from being sent to you if it can not be done securely.
135 | |
136 | */
137 |
138 | 'secure' => false,
139 |
140 | );
141 |
--------------------------------------------------------------------------------
/app/config/testing/cache.php:
--------------------------------------------------------------------------------
1 | 'array',
19 |
20 | );
21 |
--------------------------------------------------------------------------------
/app/config/testing/session.php:
--------------------------------------------------------------------------------
1 | 'array',
20 |
21 | );
22 |
--------------------------------------------------------------------------------
/app/config/view.php:
--------------------------------------------------------------------------------
1 | array(__DIR__.'/../views'),
17 |
18 | /*
19 | |--------------------------------------------------------------------------
20 | | Pagination View
21 | |--------------------------------------------------------------------------
22 | |
23 | | This view will be used to render the pagination link output, and can
24 | | be easily customized here to show any view you like. A clean view
25 | | compatible with Twitter's Bootstrap is given to you by default.
26 | |
27 | */
28 |
29 | 'pagination' => 'pagination::slider-3',
30 |
31 | );
32 |
--------------------------------------------------------------------------------
/app/config/workbench.php:
--------------------------------------------------------------------------------
1 | '',
17 |
18 | /*
19 | |--------------------------------------------------------------------------
20 | | Workbench Author E-Mail Address
21 | |--------------------------------------------------------------------------
22 | |
23 | | Like the option above, your e-mail address is used when generating new
24 | | workbench packages. The e-mail is placed in your composer.json file
25 | | automatically after the package is created by the workbench tool.
26 | |
27 | */
28 |
29 | 'email' => '',
30 |
31 | );
32 |
--------------------------------------------------------------------------------
/app/controllers/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Webxity/ticket-management-system/3d8ee10d13b347b14e7e0b94c6549fe4b36d58aa/app/controllers/.gitkeep
--------------------------------------------------------------------------------
/app/controllers/BaseController.php:
--------------------------------------------------------------------------------
1 | layout))
13 | {
14 | $this->layout = View::make($this->layout);
15 | }
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/app/controllers/HomeController.php:
--------------------------------------------------------------------------------
1 | role !== 'client' )
10 | {
11 |
12 |
13 | }
14 | */
15 | }
16 |
17 | }
18 |
19 |
--------------------------------------------------------------------------------
/app/database/.gitignore:
--------------------------------------------------------------------------------
1 | *.sqlite
2 |
--------------------------------------------------------------------------------
/app/database/migrations/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Webxity/ticket-management-system/3d8ee10d13b347b14e7e0b94c6549fe4b36d58aa/app/database/migrations/.gitkeep
--------------------------------------------------------------------------------
/app/database/migrations/2014_07_03_190600_ProjectsModel.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->string('project');
19 | $table->longText('description');
20 | $table->timestamps();
21 | });
22 | }
23 |
24 | /**
25 | * Reverse the migrations.
26 | *
27 | * @return void
28 | */
29 | public function down()
30 | {
31 | //
32 | }
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/app/database/migrations/2014_07_04_183354_ConvoModel.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->longText('message');
19 | $table->string('user_name');
20 | $table->integer('user_id');
21 | $table->integer('ticket_id');
22 | $table->timestamps();
23 | });
24 | }
25 |
26 | /**
27 | * Reverse the migrations.
28 | *
29 | * @return void
30 | */
31 | public function down()
32 | {
33 | //Schema::drop('conversations');
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/app/database/migrations/2014_07_06_075603_TicketsModel.php:
--------------------------------------------------------------------------------
1 | increments('id')->unsigned();
18 | $table->string('title');
19 | $table->longText('description');
20 | $table->string('project');
21 | $table->enum('priority' , array('None','Normal', 'Low' ,'High' , 'Urgent'));
22 | $table->string('url');
23 | $table->enum('status', array('open', 'close', 'pending'));
24 | $table->timestamps();
25 | });
26 | }
27 |
28 | /**
29 | * Reverse the migrations.
30 | *
31 | * @return void
32 | */
33 | public function down()
34 | {
35 | Schema::drop('tickets');
36 | }
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/app/database/migrations/2015_01_28_173350_TicketsModel.php:
--------------------------------------------------------------------------------
1 | increments('id')->unsigned();
18 | $table->string('title');
19 | $table->longText('description');
20 | $table->string('project');
21 | $table->enum('priority' , array('None','Normal', 'Low' ,'High' , 'Urgent'));
22 | $table->string('url');
23 | $table->string('developer');
24 | $table->integer('owner_id');
25 | $table->date('due_date');
26 | $table->enum('status', array('open', 'close', 'pending'));
27 | $table->timestamps();
28 |
29 |
30 | });
31 | }
32 |
33 | /**
34 | * Reverse the migrations.
35 | *
36 | * @return void
37 | */
38 | public function down()
39 | {
40 | Schema::table('tickets', function(Blueprint $table)
41 | {
42 | //
43 | Schema::drop('tickets');
44 | });
45 | }
46 |
47 | }
48 |
--------------------------------------------------------------------------------
/app/database/production.sqlite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Webxity/ticket-management-system/3d8ee10d13b347b14e7e0b94c6549fe4b36d58aa/app/database/production.sqlite
--------------------------------------------------------------------------------
/app/database/seeds/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Webxity/ticket-management-system/3d8ee10d13b347b14e7e0b94c6549fe4b36d58aa/app/database/seeds/.gitkeep
--------------------------------------------------------------------------------
/app/database/seeds/DatabaseSeeder.php:
--------------------------------------------------------------------------------
1 | call('UserTableSeeder');
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/app/filters.php:
--------------------------------------------------------------------------------
1 | role);
105 | if ( !Request::Ajax() && Auth::user()->role !== 'admin' && Auth::user()->role !== 'client') {
106 | return View::make('access_denied') ;
107 |
108 | }
109 |
110 | });
--------------------------------------------------------------------------------
/app/lang/en/pagination.php:
--------------------------------------------------------------------------------
1 | '« Previous',
17 |
18 | 'next' => 'Next »',
19 |
20 | );
21 |
--------------------------------------------------------------------------------
/app/lang/en/reminders.php:
--------------------------------------------------------------------------------
1 | "Passwords must be at least six characters and match the confirmation.",
17 |
18 | "user" => "We can't find a user with that e-mail address.",
19 |
20 | "token" => "This password reset token is invalid.",
21 |
22 | "sent" => "Password reminder sent!",
23 |
24 | );
25 |
--------------------------------------------------------------------------------
/app/lang/en/validation.php:
--------------------------------------------------------------------------------
1 | "The :attribute must be accepted.",
17 | "active_url" => "The :attribute is not a valid URL.",
18 | "after" => "The :attribute must be a date after :date.",
19 | "alpha" => "The :attribute may only contain letters.",
20 | "alpha_dash" => "The :attribute may only contain letters, numbers, and dashes.",
21 | "alpha_num" => "The :attribute may only contain letters and numbers.",
22 | "array" => "The :attribute must be an array.",
23 | "before" => "The :attribute must be a date before :date.",
24 | "between" => array(
25 | "numeric" => "The :attribute must be between :min and :max.",
26 | "file" => "The :attribute must be between :min and :max kilobytes.",
27 | "string" => "The :attribute must be between :min and :max characters.",
28 | "array" => "The :attribute must have between :min and :max items.",
29 | ),
30 | "confirmed" => "The :attribute confirmation does not match.",
31 | "date" => "The :attribute is not a valid date.",
32 | "date_format" => "The :attribute does not match the format :format.",
33 | "different" => "The :attribute and :other must be different.",
34 | "digits" => "The :attribute must be :digits digits.",
35 | "digits_between" => "The :attribute must be between :min and :max digits.",
36 | "email" => "The :attribute must be a valid email address.",
37 | "exists" => "The selected :attribute is invalid.",
38 | "image" => "The :attribute must be an image.",
39 | "in" => "The selected :attribute is invalid.",
40 | "integer" => "The :attribute must be an integer.",
41 | "ip" => "The :attribute must be a valid IP address.",
42 | "max" => array(
43 | "numeric" => "The :attribute may not be greater than :max.",
44 | "file" => "The :attribute may not be greater than :max kilobytes.",
45 | "string" => "The :attribute may not be greater than :max characters.",
46 | "array" => "The :attribute may not have more than :max items.",
47 | ),
48 | "mimes" => "The :attribute must be a file of type: :values.",
49 | "min" => array(
50 | "numeric" => "The :attribute must be at least :min.",
51 | "file" => "The :attribute must be at least :min kilobytes.",
52 | "string" => "The :attribute must be at least :min characters.",
53 | "array" => "The :attribute must have at least :min items.",
54 | ),
55 | "not_in" => "The selected :attribute is invalid.",
56 | "numeric" => "The :attribute must be a number.",
57 | "regex" => "The :attribute format is invalid.",
58 | "required" => "The :attribute field is required.",
59 | "required_if" => "The :attribute field is required when :other is :value.",
60 | "required_with" => "The :attribute field is required when :values is present.",
61 | "required_with_all" => "The :attribute field is required when :values is present.",
62 | "required_without" => "The :attribute field is required when :values is not present.",
63 | "required_without_all" => "The :attribute field is required when none of :values are present.",
64 | "same" => "The :attribute and :other must match.",
65 | "size" => array(
66 | "numeric" => "The :attribute must be :size.",
67 | "file" => "The :attribute must be :size kilobytes.",
68 | "string" => "The :attribute must be :size characters.",
69 | "array" => "The :attribute must contain :size items.",
70 | ),
71 | "unique" => "The :attribute has already been taken.",
72 | "url" => "The :attribute format is invalid.",
73 |
74 | /*
75 | |--------------------------------------------------------------------------
76 | | Custom Validation Language Lines
77 | |--------------------------------------------------------------------------
78 | |
79 | | Here you may specify custom validation messages for attributes using the
80 | | convention "attribute.rule" to name the lines. This makes it quick to
81 | | specify a specific custom language line for a given attribute rule.
82 | |
83 | */
84 |
85 | 'custom' => array(
86 | 'attribute-name' => array(
87 | 'rule-name' => 'custom-message',
88 | ),
89 | ),
90 |
91 | /*
92 | |--------------------------------------------------------------------------
93 | | Custom Validation Attributes
94 | |--------------------------------------------------------------------------
95 | |
96 | | The following language lines are used to swap attribute place-holders
97 | | with something more reader friendly such as E-Mail Address instead
98 | | of "email". This simply helps us make messages a little cleaner.
99 | |
100 | */
101 |
102 | 'attributes' => array(),
103 |
104 | );
105 |
--------------------------------------------------------------------------------
/app/libraries/HelperFunc.php:
--------------------------------------------------------------------------------
1 | where('id', $id)->first();
31 | if(count($row) > 0)
32 | {
33 | return $row;
34 | }
35 | else
36 | {
37 | return false;
38 | }
39 | }
40 |
41 | }
--------------------------------------------------------------------------------
/app/models/TicketsModel.php:
--------------------------------------------------------------------------------
1 | where('owner_id', $user_id)->get();
30 | if(count($GetRowsByUserId) > 0)
31 | {
32 | return $GetRowsByUserId;
33 | }
34 | else
35 | {
36 | return false;
37 | }
38 | }
39 |
40 | }
--------------------------------------------------------------------------------
/app/models/User.php:
--------------------------------------------------------------------------------
1 | name;
33 | }
34 |
35 | public function getId()
36 | {
37 | return $this->id;
38 | }
39 |
40 | public static function GetUserNameById($user_id)
41 | {
42 | $row = DB::table('users')->where('id', $user_id)->first();
43 | if(count($row) > 0)
44 | {
45 | return $row;
46 | }
47 | else
48 | {
49 | return false;
50 | }
51 | }
52 |
53 | public static function GetUserName($user_email)
54 | {
55 | $row = DB::table('users')->where('email', $user_email)->first();
56 | if(count($row) > 0)
57 | {
58 | return $row;
59 | }
60 | else
61 | {
62 | return false;
63 | }
64 | }
65 |
66 | }
67 |
--------------------------------------------------------------------------------
/app/routes.php:
--------------------------------------------------------------------------------
1 | $value],[ 'url' => 'url' ]);
98 | if ($validator->fails()) {
99 | // The given data did not pass validation
100 | return false;
101 |
102 | } else {
103 |
104 | return true;
105 | }
106 | }
107 | else{
108 |
109 | $value="http://". $value;
110 | $validator = Validator::make( ['url' => $value],[ 'url' => 'url' ]);
111 | if ($validator->fails()) {
112 | // The given data did not pass validation
113 | return false;
114 |
115 | } else {
116 |
117 | return true;
118 | }
119 |
120 |
121 | }
122 |
123 | });
124 |
125 |
126 |
--------------------------------------------------------------------------------
/app/start/local.php:
--------------------------------------------------------------------------------
1 | client->request('GET', '/');
13 |
14 | $this->assertTrue($this->client->getResponse()->isOk());
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/app/tests/TestCase.php:
--------------------------------------------------------------------------------
1 |
5 | ×
6 |
You do not have the permission to access this area.
7 |
8 | @stop
--------------------------------------------------------------------------------
/app/views/add_project.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.master-child')
2 |
3 | @section('page-wrapper')
4 |
5 |
15 |
16 |
17 |
18 |
19 |
20 | @if( Session::pull('submit'))
21 | @if(empty(Session::has('message')))
22 | @if( $errors->count() > 0 )
23 |
24 |
×
25 |
The following errors have occurred:
26 | {{ $errors->first('project', '
:message
') }}
27 |
28 | @else
29 |
30 | ×
31 | {{ "Project Created Successfully" }}
32 |
33 | @endif
34 | @else
35 |
36 |
×
37 |
The following errors have occurred:
38 |
41 |
42 |
43 | @endif
44 | @endif
45 |
46 |
47 |
48 |
49 | {{ Form::open(array('action' => 'Webxity\DashboardController@postAddProject') ) }}
50 |
51 | Project Name
52 | {{Form::text('project' , Input::old('project'), array( 'class' => 'form-control', 'placeholder' => 'Project Name')) }}
53 |
54 |
55 | Description
56 | {{ Form::textarea('description' , Input::old('description'), array( 'class' => 'form-control', 'placeholder' => 'Description')) }}
57 |
58 |
59 |
Create
60 | {{ Form::close() }}
61 |
62 |
63 | @stop
64 |
65 |
--------------------------------------------------------------------------------
/app/views/add_user.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.master-child')
2 |
3 | @section('page-wrapper')
4 |
5 |
15 |
16 |
17 |
18 |
19 |
20 | @if( Session::pull('submit'))
21 | @if( $errors->count() > 0 )
22 |
23 |
×
24 |
The following errors have occurred:
25 |
32 |
33 |
34 | @else
35 |
36 | ×
37 | {{ "User Created Successfully" }}
38 |
39 |
40 | @endif
41 | @endif
42 |
43 |
44 |
45 |
46 | {{ Form::open(array('action' => 'Webxity\DashboardController@postAddUser') ) }}
47 |
48 | User Name
49 | {{Form::text('name' , Input::old('name'), array( 'class' => 'form-control', 'placeholder' => 'Name')) }}
50 |
51 |
52 | Email
53 | {{ Form::email('email' , Input::old('email'), array( 'class' => 'form-control', 'placeholder' => 'Email')) }}
54 |
55 |
56 | Password
57 |
58 |
59 |
60 | @if( Auth::user()->role == 'admin')
61 |
62 | User Role
63 |
64 | {{ Form::select('role', ['admin' => 'Admin', 'client' => 'Client', 'developer' => 'Developer'],
65 | Input::old('role') , ['class' => 'form-control', 'placeholder' => 'Role'] ) }}
66 |
67 |
68 | @endif
69 |
70 |
71 | @if( Auth::user()->role == 'client')
72 |
73 | User Role
74 |
75 | {{ Form::select('role', [ 'developer' => 'Developer'], Input::old('role') , ['class' => 'form-control', 'placeholder' => 'Role'] ) }}
76 |
77 |
78 | @endif
79 |
80 |
81 |
Create
82 | {{ Form::close() }}
83 |
84 |
85 | @stop
86 |
87 |
--------------------------------------------------------------------------------
/app/views/admin_email.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Register - Webxity Ticket Management
9 |
10 |
11 |
12 |
13 |
14 |
17 |
18 |
19 |
{{ $data['creator'] }} registered {{ $data['name'] }} on webxity ticket management system.
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/views/charts.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.master-child')
2 |
3 | @section('page-wrapper')
4 |
5 |
6 |
Charts
7 | Display Your Data
8 |
9 |
10 | Dashboard
11 | Charts
12 |
13 |
14 |
×
15 | There are two options for charts:
Flot
16 | charts and
morris.js .
17 | Choose which one best suits your needs, and make sure to master the documentation to get the most out of
18 | these charts!
19 |
20 |
21 |
22 |
23 |
24 |
25 |
Flot Charts
26 |
27 |
28 |
29 |
Line Graph Example with Tooltips
30 |
31 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
Pie Chart Example with Tooltips
45 |
46 |
54 |
55 |
56 |
57 |
58 |
59 |
Multiple Axes Line Graph Example with
60 | Tooltips and Raw Data
61 |
62 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
Moving Line Chart
79 |
80 |
88 |
89 |
90 |
91 |
92 |
93 |
Bar Graph with Tooltips
94 |
95 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
Additional Flot Chart Information
110 |
111 |
Full documentation for Flot can be found at http://www.flotcharts.org/ .
112 | Flot has a lot of different options available, and they have a bunch of plugins as well that allow you to do
113 | neat things. Here we are using the tooltip plugin, the resize plugin, and the pie chart plugin, but there
114 | are many more to choose from. The documentation is a bit more advanced and requires a good deal of
115 | JavaScript knowledge in order to make the charts work for you.
116 |
117 |
NOTE: The charts are responsive, and the Flot charts are redrawn when the window resizes.
118 | The only one that needs a page refresh on a window resize is the pie chart. If you find a way to fix this,
119 | please let me know.
120 |
121 |
122 |
123 |
124 |
125 |
morris.js Charts
126 |
127 |
128 |
129 |
Area Line Graph Example with Tooltips
130 |
131 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
Donut Chart Example
143 |
144 |
150 |
151 |
152 |
153 |
154 |
155 |
Line Graph Example with Tooltips
156 |
157 |
163 |
164 |
165 |
166 |
167 |
168 |
Bar Graph Example
169 |
170 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
Additional morris.js Information
183 |
184 |
Full documentation for morris.js charts can be found at http://www.oesmith.co.uk/morris.js/ .
186 | The chart options for morris.js are line
187 | & area charts , bar charts , and donut charts . The
189 | documentation is pretty straight forward, and you will want to look at it in order to get the most out of
190 | the charts.
191 |
192 |
NOTE: The charts are responsive, but they are drawn when the window loads. If you change the
193 | window size, for instance resizing your brownser window, you will need to refresh the page to redraw the
194 | chart responsively. According to morris.js, automatically redrawing charts on window resizing is being
195 | worked into their next big update.
196 |
197 |
198 | @stop
--------------------------------------------------------------------------------
/app/views/create_ticket.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.master-child')
2 |
3 | @section('page-wrapper')
4 |
5 |
15 |
16 |
17 |
18 |
19 |
20 | @if( Session::pull('submit'))
21 | @if(empty(Session::has('Message')))
22 |
23 | ×
24 | {{ Session::get('msg') }}
25 |
26 | @else
27 |
28 | ×
29 | {{ Session::get('Message') }}
30 |
31 | @endif
32 | @endif
33 |
34 |
35 |
36 |
37 | {{ Form::open(array('url' => url('create-ticket/'.$project_id)) ) }}
38 |
39 |
40 | Project Name
41 |
42 | {{Form::text('project', $project , array('class' => 'form-control' , 'readonly' => 'readonly')) }}
43 |
44 |
45 |
46 |
47 | Task
48 | {{Form::text('title' , Input::old('title'), array( 'class' => 'form-control', 'placeholder' => 'Title' , 'required' => 'required' )) }}
49 |
50 |
51 |
52 | Description
53 | {{Form::textarea('description' , Input::old('description'),
54 | array( 'placeholder' => 'Description Here..' , 'class' => 'form-control' , 'required' => 'required' )) }}
55 |
56 |
57 |
58 |
59 | Priority
60 |
61 | {{Form::select('priority' ,
62 | ['none'=> 'None' , 'low' => 'Low' , 'normal' => 'Normal' , 'high' => 'High' , 'urgent' => 'Urgent' ]
63 | , Input::old('priority'), [ 'class' => 'form-control']
64 | ) }}
65 |
66 |
67 |
74 |
75 |
81 |
82 |
100 |
101 |
Create
102 | {{ Form::close() }}
103 |
104 |
105 |
106 |
107 |
108 |
111 |
112 |
113 | @stop
114 |
115 |
--------------------------------------------------------------------------------
/app/views/dashboard.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.master-child')
2 |
3 | @section('page-wrapper')
4 |
5 |
6 |
Dashboard
7 |
8 |
9 |
10 | Dashboard
11 |
12 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
Calendar
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
Recent Tickets
35 |
36 |
37 |
38 |
39 |
40 |
41 | Ticket #
42 | Title
43 | Status
44 | Priority
45 | Created At
46 | Updated At
47 |
48 |
49 |
50 | @if( count($data['tickets']) > 0 )
51 | @foreach($data['tickets'] as $tickets)
52 |
53 | {{$tickets->id}}
54 | {{{$tickets->title}}}
55 | {{{$tickets->status}}}
56 | {{{$tickets->priority}}}
57 | {{ Webxity\HelperFunc::get_date($tickets->created_at ) }}
58 |
59 | @if ( $tickets->created_at != $tickets->updated_at )
60 | {{ Webxity\HelperFunc::get_date($tickets->updated_at ) }}
61 | @else
62 | Not Updated
63 | @endif
64 |
65 |
66 | @endforeach
67 | @endif
68 |
69 |
70 |
71 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
Recent Projects
83 |
84 |
85 |
86 |
87 |
88 |
89 | Project #
90 | Name
91 | Started At
92 |
93 |
94 |
95 | @if( count($data['projects']) > 0 )
96 | @foreach($data['projects'] as $projects)
97 |
98 | {{$projects->id}}
99 | {{{$projects->project}}}
100 | {{ Webxity\HelperFunc::get_date($projects->created_at ) }}
101 |
102 | @endforeach
103 | @endif
104 |
105 |
106 |
107 |
110 |
111 |
112 |
113 |
114 |
115 |
116 | @stop
--------------------------------------------------------------------------------
/app/views/edit_project.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.master-child')
2 |
3 | @section('page-wrapper')
4 |
5 |
15 |
16 |
17 |
18 |
19 |
20 | @if(isset($msg))
21 |
22 |
23 | @if($msg == "Record Successfully Updated")
24 |
25 | ×
26 | {{ $msg }}
27 |
28 | @else
29 |
30 | ×
31 | {{ $msg }}
32 |
33 | @endif
34 |
35 | @endif
36 |
37 |
38 |
39 |
40 | @if($project)
41 |
42 |
43 | {{ Form::model($project , array('action' => 'Webxity\DashboardController@postEditProject', $project->id)) }}
44 |
45 | Project Name
46 | {{Form::text('project' ,$project->project, array( 'class' => 'form-control')) }}
47 |
48 |
49 |
50 | Description
51 | {{Form::textarea('description' , $project->description, array( 'class' => 'form-control')) }}
52 |
53 |
54 | {{Form::hidden('id' , $project->id)}}
55 |
56 |
57 |
58 |
Edit
59 | {{ Form::close() }}
60 |
61 | @endif
62 |
63 | @stop
--------------------------------------------------------------------------------
/app/views/edit_ticket.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.master-child')
2 |
3 | @section('page-wrapper')
4 |
5 | project] = $project->project;
10 | endforeach;
11 |
12 | ?>
13 |
14 |
24 |
25 |
26 |
27 |
28 |
29 | @if( Session::pull('submit'))
30 | @if(Input::old())
31 | title = Input::old('title') ;
33 | $ticket->description = Input::old('description') ;
34 | $ticket->status = Input::old('status');
35 | $ticket->priority = Input::old('priority');
36 | $ticket->project = Input::old('project');
37 | $ticket->url = Input::old('url');
38 | ?>
39 | @endif
40 | @if( $errors->count() > 0 )
41 |
42 |
×
43 |
The following errors have occurred:
44 |
49 |
50 |
51 | @else
52 |
53 | ×
54 | {{ "Ticket Edited Successfully " }}
55 |
56 |
57 | @endif
58 | @endif
59 |
60 |
61 |
62 |
63 | {{ Form::model($ticket, array('action' => 'Webxity\DashboardController@postEditTicket', $ticket->id)) }}
64 |
65 | Title
66 | {{Form::text('title' ,$ticket->title , array( 'class' => 'form-control')) }}
67 |
68 | @if ( Auth::user()->role == 'admin')
69 |
70 | Status
71 | {{ Form::select('status', array('open' => 'Open','close' => 'Close'),
72 | $ticket->status ,
73 | array('class' => 'form-control') ) ; }}
74 |
75 | @endif
76 |
77 | Description
78 | {{Form::textarea('description' , $ticket->description , array( 'class' => 'form-control')) }}
79 |
80 |
81 | Project Name
82 | {{Form::select('project' , $names ,$ticket->project, [ 'class' => 'form-control'] ) }}
83 |
84 |
85 |
86 | Priority
87 |
88 | {{Form::select('priority' ,
89 | ['None'=> 'None' , 'Low' => 'Low' , 'Normal' => 'Normal' , 'High' => 'High' , 'Urgent' => 'Urgent' ]
90 | , $ticket->priority , [ 'class' => 'form-control']
91 | ) }}
92 |
93 |
101 |
102 |
103 |
Edit
104 | {{Form::hidden('id' , $ticket->id )}}
105 | {{ Form::close() }}
106 |
107 |
108 |
109 | @stop
--------------------------------------------------------------------------------
/app/views/edit_user.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.master-child')
2 |
3 | @section('page-wrapper')
4 |
5 |
6 |
16 |
17 |
18 |
19 |
20 |
21 | @if( Session::pull('submit'))
22 | @if(Input::old())
23 | name = Input::old('name') ;
25 | $user->email = Input::old('email') ;
26 | $user->role = Input::old('role');
27 | $user->passowrd = Input::old('password');
28 | ?>
29 | @endif
30 |
31 | @if( $errors->count() > 0 )
32 |
33 |
×
34 |
The following errors have occurred:
35 |
42 |
43 |
44 | @else
45 |
46 | ×
47 | {{ "User Edited Successfully" }}
48 |
49 |
50 | @endif
51 | @endif
52 |
53 |
54 | @if($user)
55 |
56 | {{ Form::model($user, array('action' => 'Webxity\DashboardController@postEditUser', $user->id)) }}
57 |
58 | User Name
59 | {{Form::text('name' , $user->name, array( 'class' => 'form-control')) }}
60 |
61 |
62 | Email
63 | {{Form::text('email' , $user->email, array( 'class' => 'form-control')) }}
64 |
65 |
66 | Password
67 |
68 |
69 |
70 | {{" * Let this field be empty to retain the previous password"}}
71 |
72 |
73 | User Role
74 |
75 | {{ Form::select('role', [ 'client' => 'Client', 'admin' => 'Admin', 'developer' => 'Developer' ,
76 | 'analyst' => 'Business Analyst'], $user->role , ['class' => 'form-control'] ) }}
77 | {{Form::hidden('id' , $user->id)}}
78 |
79 |
80 |
81 |
Submit
82 | {{ Form::close() }}
83 |
84 | @endif
85 |
86 |
87 |
88 | @stop
89 |
90 |
--------------------------------------------------------------------------------
/app/views/email_template/project_add_member.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Register - Webxity Ticket Management
9 |
10 |
11 |
12 |
13 |
14 |
17 |
18 |
19 |
20 | {{ $data['creator'] }} added you the project {{ $data['project_id'] }} on webxity ticket management system.
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/views/email_template/task_complete.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Webxity Ticket Management
9 |
10 |
11 |
12 |
13 |
14 |
17 |
18 |
19 |
Hi {{ $data['project_owner_name'] }},
20 |
{{ $data['creator'] }} has been completed this tasks( {{ $data['task'] }} ) in the webxity Ticket Management System.
21 |
22 |
23 |
24 |
visit site
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/app/views/email_template/task_email.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Webxity Ticket Management
9 |
10 |
11 |
12 |
13 |
14 |
17 |
18 |
19 |
Hi {{ $data['developer_name'] }},
20 |
{{ $data['creator'] }} assign tasks in the webxity Ticket Management System.
21 |
22 |
Task Detail
23 |
Project : {{ $data['project'] }}
24 |
25 |
Task : {{ $data['title'] }}
26 |
27 |
Description : {{ $data['desription'] }}
28 |
29 |
visit site
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/app/views/emails/auth/reminder.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Password Reset
8 |
9 |
10 | To reset your password, complete this form: {{ URL::to('password/reset', array($token)) }}.
11 | This link will expire in {{ Config::get('auth.reminder.expire', 60) }} minutes.
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/views/error404.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.master-child')
2 |
3 | @section('page-wrapper')
4 | The page isn't found. 404 Not Found
5 | @stop
--------------------------------------------------------------------------------
/app/views/hello.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Laravel PHP Framework
6 |
35 |
36 |
37 |
38 |
39 |
You have arrived.
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/app/views/layouts/master-child.blade.php:
--------------------------------------------------------------------------------
1 | @if (!$isAjax)
2 | @extends('layouts.master')
3 |
4 | @section('page-wrapper')
5 |
6 | @stop
7 | @else
8 | @yield('page-wrapper')
9 | @endif
--------------------------------------------------------------------------------
/app/views/layouts/master.blade.php:
--------------------------------------------------------------------------------
1 | @if(!$isAjax)
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | Dashboard - Webxity
11 |
12 | {{ HTML::style('css/bootstrap.min.css') }}
13 | {{ HTML::style('css/sb-admin.css') }}
14 | {{ HTML::style('css/css/font-awesome.min.css') }}
15 | {{ HTML::style('css/fullcalendar.css') }}
16 | {{ HTML::style('css/fullcalendar.print.css') }}
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
34 |
35 |
36 |
37 |
67 |
68 |
81 |
82 |
120 |
121 |
122 |
123 |
124 |
125 | @section('page-wrapper')
126 |
127 | @show
128 |
129 |
130 |
131 |
132 |
133 |
134 | {{ HTML::script('js/moment.min.js') }}
135 | {{ HTML::script('js/jquery.min.js') }}
136 | {{ HTML::script('js/fullcalendar.min.js') }}
137 |
215 | {{ HTML::script('js/bootstrap.js') }}
216 |
222 | {{ HTML::script('js/tablesorter/tables.js') }}
223 | {{ HTML::script('js/tablesorter/tablesorter.js') }}
224 | {{ HTML::script('js/init.js') }}
225 |
226 |
227 | @endif
228 |
--------------------------------------------------------------------------------
/app/views/list_project_member.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.master-child')
2 |
3 | @section('page-wrapper')
4 |
5 |
17 |
18 |
19 |
20 |
21 |
Project Members
22 |
23 |
24 |
25 |
26 |
27 |
28 | #
29 | Name
30 | Develoepr Email
31 | Created On
32 | Project Name
33 | Action
34 |
35 |
36 |
37 |
43 |
44 | {{ $index }}
45 | {{ $Username[$array] }}
46 | {{ $result->developer_email }}
47 | {{ date('d-m-Y',strtotime($result->created_at)) }}
48 | {{ $GetProjectName}}
49 |
50 | Remove
51 |
52 |
53 |
58 | No Developer Found.
59 |
60 |
61 |
62 |
63 |
64 |
65 |
68 |
69 |
70 |
94 |
95 |
96 | @stop
--------------------------------------------------------------------------------
/app/views/list_projects.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.master-child')
2 |
3 | @section('page-wrapper')
4 |
5 |
6 |
18 |
19 |
20 |
21 |
22 |
Projects
23 |
24 |
25 |
26 |
27 | @if(Auth::user()->role == 'admin')
28 |
29 |
30 | #
31 | Name
32 | Description
33 | Created On
34 | Created By
35 | Modify
36 | Action
37 |
38 |
39 |
40 |
41 | @if($AllProjects)
42 |
43 | @foreach($AllProjects as $project)
44 |
45 |
46 | {{{ $project->project }}}
47 | {{{ $project->description }}}
48 | {{ date('d-m-Y' , strtotime( $project->created_at)) }}
49 | {{ $Username[$array] }}
50 | Edit
51 |
52 | Remove
53 | Add Task
54 | Add Developer
55 | View Developer
56 |
57 |
58 |
62 | @endforeach
63 | @endif
64 |
65 | @else
66 |
67 |
68 | #
69 | Name
70 | Description
71 | Created On
72 | Modify
73 | Action
74 |
75 |
76 |
77 |
78 | @if($projects)
79 | @foreach($projects as $project)
80 |
81 |
82 | {{{ $project->project }}}
83 | {{{ $project->description }}}
84 | {{ date('d-m-Y' , strtotime( $project->created_at)) }}
85 | Edit
86 |
87 | Remove
88 | Add Task
89 | Add Member
90 | View Member
91 |
92 |
93 |
94 | @endforeach
95 | @endif
96 |
97 | @endif
98 |
99 |
100 |
101 |
102 |
105 |
106 |
107 |
108 |
109 |
110 | @stop
--------------------------------------------------------------------------------
/app/views/list_tickets.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.master-child')
2 |
3 | @section('page-wrapper')
4 |
14 |
15 |
16 |
17 |
18 | @if(Auth::user()->role == 'client')
19 |
20 |
21 |
22 |
Tickets
23 |
24 |
25 |
26 |
27 |
28 |
29 | #
30 | Task
31 | Project Name
32 | Priority
33 | Status
34 | Due Date
35 | Created On
36 | Modify
37 | Delete
38 |
39 |
40 |
41 |
42 | @if(!empty($tickets))
43 |
44 | @if($tickets)
45 | @foreach($tickets as $ticket)
46 |
47 |
48 | {{{ $ticket->title }}}
49 | {{{ $ticket->project }}}
50 | {{{ $ticket->priority }}}
51 | @if($ticket->status == 'open')
52 | {{{ $ticket->status }}}
53 | @else
54 | {{{ $ticket->status }}}
55 | @endif
56 | {{ date('d-m-Y',strtotime($ticket->due_date)) }}
57 | {{ date('d-m-Y',strtotime($ticket->created_at)); }}
58 | Edit
59 | Remove
60 |
61 |
62 | @endforeach
63 | @endif
64 | @else
65 | No Ticket Found.
66 |
67 |
68 |
69 |
70 |
71 |
72 | @endif
73 |
74 |
75 |
76 |
77 | @elseif(Auth::user()->role == 'admin')
78 |
79 |
80 |
81 |
Tickets
82 |
83 |
84 |
85 |
86 |
87 |
88 | #
89 | Task
90 | Project Name
91 | Priority
92 | Status
93 | Due Date
94 | Created On
95 | Modify
96 | Delete
97 |
98 |
99 |
100 |
101 | @if(!empty($GetAllTickets))
102 |
103 | @if($GetAllTickets)
104 | @foreach($GetAllTickets as $ticket)
105 |
106 |
107 | {{{ $ticket->title }}}
108 | {{{ $ticket->project }}}
109 | {{{ $ticket->priority }}}
110 | @if($ticket->status == 'open')
111 | {{{ $ticket->status }}}
112 | @else
113 | {{{ $ticket->status }}}
114 | @endif
115 | {{ date('d-m-Y',strtotime($ticket->due_date)) }}
116 | {{ date('d-m-Y',strtotime($ticket->created_at)); }}
117 | Edit
118 | Remove
119 |
120 |
121 | @endforeach
122 | @endif
123 | @else
124 | No Ticket Found.
125 |
126 |
127 | @endif
128 |
129 |
130 |
131 |
132 | @endif
133 |
134 |
135 |
136 |
137 | @if(Auth::user()->role == 'developer')
138 |
139 |
140 |
141 |
Tickets
142 |
143 |
144 |
145 |
146 |
147 |
148 | #
149 | Task
150 | Project Name
151 | Priority
152 | Status
153 | Due Date
154 | Assign date
155 | Action
156 |
157 |
158 |
159 | @if(!empty($developer_task))
160 |
165 |
166 | {{ $index }}
167 | {{ $ticket->title }}
168 | {{ $ticket->project }}
169 | {{ $ticket->priority }}
170 | @if($ticket->status == 'open')
171 | {{ $ticket->status }}
172 | @else
173 | {{ $ticket->status }}
174 | @endif
175 | {{ $ticket->due_date }}
176 | {{ date('d-m-Y',strtotime($ticket->created_at)) }}
177 | @if($ticket->status == 'open')
178 |
179 |
180 | Mark as Submit
181 |
182 |
183 | @else
184 |
185 |
186 | Re-open Project
187 |
188 |
189 | @endif
190 |
191 |
192 | @else
193 |
194 | No Task Found.
195 |
196 | @endif
197 |
198 |
199 |
200 |
201 |
202 |
203 | @endif
204 |
205 |
231 | @stop
--------------------------------------------------------------------------------
/app/views/list_users.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.master-child')
2 |
3 | @section('page-wrapper')
4 |
5 |
17 |
18 |
19 |
20 |
21 |
Users
22 |
23 |
24 |
25 |
26 | @if(Auth::user()->role == 'admin')
27 |
28 |
29 | #
30 | Name
31 | Email
32 | Role
33 | Modify
34 | Status
35 | Delete
36 |
37 |
38 |
39 |
40 | @if($users)
41 | @foreach($users as $user)
42 |
43 |
44 | {{{ $user->name }}}
45 | {{{ $user->email }}}
46 | {{{ $user->role }}}
47 | Edit
48 | @if($user->status == '1')
49 | Active
50 | @else
51 | Deactive
52 | @endif
53 | Remove
54 |
55 |
56 | @endforeach
57 | @endif
58 |
59 | @else
60 |
61 |
62 | #
63 | Name
64 | Email
65 | Role
66 |
67 |
68 |
69 |
70 | @if($users)
71 | @foreach($users as $user)
72 |
73 |
74 | {{{ $user->name }}}
75 | {{{ $user->email }}}
76 | {{{ $user->role }}}
77 |
78 |
79 | @endforeach
80 | @endif
81 |
82 | @endif
83 |
84 |
85 |
86 |
89 |
90 |
91 |
113 |
114 | @stop
--------------------------------------------------------------------------------
/app/views/login.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Please! Sign in
6 | {{ HTML::style('css/bootstrap.min.css') }}
7 | {{ HTML::style('css/login.css') }}
8 |
9 |
10 |
11 |
12 |
15 |
16 |
17 | @if(!empty(Session::has('msg')))
18 |
19 |
×
20 |
The following errors have occurred:
21 |
24 |
25 |
26 | @endif
27 |
55 |
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/app/views/project_member.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.master-child')
2 |
3 | @section('page-wrapper')
4 |
5 |
15 |
16 | @if( Session::pull('submit'))
17 | @if(empty(Session::has('message')))
18 | @if( $errors->count() > 0 )
19 |
20 |
×
21 |
The following errors have occurred:
22 |
25 |
26 |
27 | @else
28 |
29 | ×
30 | {{ "Developer Added Successfully" }}
31 |
32 | @endif
33 | @else
34 |
35 |
×
36 |
The following errors have occurred:
37 |
40 |
41 |
42 | @endif
43 | @endif
44 |
45 |
46 |
47 |
48 |
49 | {{ Form::open(array('action' => 'Webxity\DashboardController@postAddMember' , $project_id) ) }}
50 |
51 | Developer Email
52 | {{Form::email('email' , Input::old('email'), array( 'class' => 'form-control', 'placeholder' => 'email')) }}
53 |
54 |
55 | {{ Form::hidden('project_id' , $project_id ) }}
56 |
57 |
Add Member
58 | {{ Form::close() }}
59 |
60 |
61 | @stop
62 |
63 |
--------------------------------------------------------------------------------
/app/views/show_ticket.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.master-child')
2 |
3 | @section('page-wrapper')
4 |
5 |
17 |
18 |
19 |
20 |
21 |
{{ $ticket->title }}
22 |
23 |
24 |
25 |
26 |
27 |
28 |
31 | @if( $ticket->description === "" )
32 |
33 | ×
34 | No Description Available.
35 |
36 | @endif
37 |
38 |
39 | @if( $ticket->description !== "" )
40 |
41 |
42 | {{{ $ticket->description }}}
43 |
44 | @endif
45 |
46 | @if( $ticket->url !== "" )
47 |
Reference Url
48 |
49 |
50 | http://{{{ $ticket->url }}}
51 |
52 |
53 | @endif
54 |
55 |
56 |
57 |
58 |
59 |
62 |
63 |
64 |
65 | @if(count ( $convo_msg) > 0 )
66 | @foreach($convo_msg as $convo)
67 |
68 | {{{$convo->message. "."}}}
69 | {{{" By " . $convo->user_name . " At " . date('m/d/Y (h:i:s a)', strtotime($convo->created_at)) }}}
70 |
71 | @endforeach
72 | @else
73 |
74 | ×
75 | No Conversations available.
76 |
77 | @endif
78 |
79 |
80 |
81 | ×
82 | Invalid Input
83 |
84 | {{ Form::open() }}
85 |
86 |
87 | Message
88 | {{Form::textarea('msg' , Input::old('msg'),
89 | array( 'placeholder' => 'Type Your Message Here..' , 'class' => 'form-control' , 'id' =>'text-box')) }}
90 |
91 | {{Form::hidden('id' , $ticket->id , array('id' => 'ticket-id'))}}
92 | {{Form::hidden('user' , Auth::user()->id , array('id' => 'user-id'))}}
93 |
94 | {{ Form::submit('Send', array('class' => 'btn btn-primary' , 'id' => 'convo-message'))}}
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 | @stop
--------------------------------------------------------------------------------
/app/views/time_tracking.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.master-child')
2 |
3 | @section('page-wrapper')
4 |
5 |
15 |
16 |
17 |
18 |
19 |
Login History
20 |
21 |
22 |
23 |
24 |
25 |
26 | #
27 | User Name
28 | Login Time
29 | Logout Time
30 | Login Date
31 | Logout Date
32 | Total Duration
33 |
34 |
35 |
36 |
41 |
42 | {{ $index }}
43 | {{ Auth::user()->getName() }}
44 | {{ date('h:i A',strtotime($result->login_time)) }}
45 | logout_time !== '0000-00-00 00:00:00'){
47 | $date = new DateTime($result->login_time);
48 | $diff = $date->diff(new DateTime($result->logout_time));
49 |
50 | if($diff->h !=='0' || $diff->i !=='0' || $diff->s == '0')
51 | {
52 | $hour = $diff->h;
53 | $minute = $diff->i;
54 | $second = $diff->s;
55 | }
56 | else
57 | {
58 | $hour = '0';
59 | $minute = '0';
60 | $second = '0';
61 | }
62 |
63 | ?>
64 | {{ date('h:i A',strtotime($result->logout_time)) }}
65 | {{ date('d-M-Y',strtotime($result->login_time)) }}
66 | {{ date('d-M-Y',strtotime($result->logout_time)) }}
67 |
68 | {{ $hour }} Hours
69 |
70 | @if ( $minute > 0 )
71 | {{ $minute }} Min
72 |
73 | {{ $second }} Sec
74 | @endif
75 |
76 |
77 |
78 | Currently Login
79 |
80 |
81 |
82 |
83 |
84 |
85 |
92 |
93 |
94 |
97 |
98 |
99 |
100 |
101 | @stop
--------------------------------------------------------------------------------
/app/views/welcome.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Register - Webxity Ticket Management
9 |
10 |
11 |
12 |
13 |
14 |
17 |
18 |
Welcome : {{ $data['name'] }}
19 |
20 | {{ $data['creator'] }} register you on webxity ticket management system.
21 |
Below its your login detail.
22 |
Email : {{ $data['user']['email'] }}
23 |
Password : {{ $data['user']['password'] }}
24 |
Visit site
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/artisan:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 | setRequestForConsoleEnvironment();
45 |
46 | $artisan = Illuminate\Console\Application::start($app);
47 |
48 | /*
49 | |--------------------------------------------------------------------------
50 | | Run The Artisan Application
51 | |--------------------------------------------------------------------------
52 | |
53 | | When we run the console application, the current CLI command will be
54 | | executed in this console and the response sent back to a terminal
55 | | or another output device for the developers. Here goes nothing!
56 | |
57 | */
58 |
59 | $status = $artisan->run();
60 |
61 | /*
62 | |--------------------------------------------------------------------------
63 | | Shutdown The Application
64 | |--------------------------------------------------------------------------
65 | |
66 | | Once Artisan has finished running. We will fire off the shutdown events
67 | | so that any final work may be done by the application before we shut
68 | | down the process. This is the last thing to happen to the request.
69 | |
70 | */
71 |
72 | $app->shutdown();
73 |
74 | exit($status);
75 |
--------------------------------------------------------------------------------
/bootstrap/Untitled-1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Untitled Document
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/bootstrap/autoload.php:
--------------------------------------------------------------------------------
1 | __DIR__.'/../app',
17 |
18 | /*
19 | |--------------------------------------------------------------------------
20 | | Public Path
21 | |--------------------------------------------------------------------------
22 | |
23 | | The public path contains the assets for your web application, such as
24 | | your JavaScript and CSS files, and also contains the primary entry
25 | | point for web requests into these applications from the outside.
26 | |
27 | */
28 |
29 | 'public' => __DIR__.'/..',
30 |
31 | /*
32 | |--------------------------------------------------------------------------
33 | | Base Path
34 | |--------------------------------------------------------------------------
35 | |
36 | | The base path is the root of the Laravel installation. Most likely you
37 | | will not need to change this value. But, if for some wild reason it
38 | | is necessary you will do so here, just proceed with some caution.
39 | |
40 | */
41 |
42 | 'base' => __DIR__.'/..',
43 |
44 | /*
45 | |--------------------------------------------------------------------------
46 | | Storage Path
47 | |--------------------------------------------------------------------------
48 | |
49 | | The storage path is used by Laravel to store cached Blade views, logs
50 | | and other pieces of information. You may modify the path here when
51 | | you want to change the location of this directory for your apps.
52 | |
53 | */
54 |
55 | 'storage' => __DIR__.'/../app/storage',
56 |
57 | );
58 |
--------------------------------------------------------------------------------
/bootstrap/start.php:
--------------------------------------------------------------------------------
1 | detectEnvironment(array(
28 |
29 | 'local' => array('rw'),
30 |
31 | ));
32 |
33 | /*
34 | |--------------------------------------------------------------------------
35 | | Bind Paths
36 | |--------------------------------------------------------------------------
37 | |
38 | | Here we are binding the paths configured in paths.php to the app. You
39 | | should not be changing these here. If you need to change these you
40 | | may do so within the paths.php file and they will be bound here.
41 | |
42 | */
43 |
44 | $app->bindInstallPaths(require __DIR__.'/paths.php');
45 |
46 | /*
47 | |--------------------------------------------------------------------------
48 | | Load The Application
49 | |--------------------------------------------------------------------------
50 | |
51 | | Here we will load this Illuminate application. We will keep this in a
52 | | separate location so we can isolate the creation of an application
53 | | from the actual running of the application with a given request.
54 | |
55 | */
56 |
57 | $framework = $app['path.base'].
58 | '/vendor/laravel/framework/src';
59 |
60 | require $framework.'/Illuminate/Foundation/start.php';
61 |
62 | /*
63 | |--------------------------------------------------------------------------
64 | | Return The Application
65 | |--------------------------------------------------------------------------
66 | |
67 | | This script returns the application instance. The instance is given to
68 | | the calling script so we can separate the building of the instances
69 | | from the actual running of the application and sending responses.
70 | |
71 | */
72 |
73 | return $app;
74 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "laravel/laravel",
3 | "description": "The Laravel Framework.",
4 | "keywords": ["framework", "laravel"],
5 | "license": "MIT",
6 | "require": {
7 | "laravel/framework": "4.2.*"
8 | },
9 | "require-dev": {
10 | "phpunit/phpunit": "4.1.*"
11 | },
12 | "autoload": {
13 | "classmap": [
14 | "app/commands",
15 | "app/controllers",
16 | "app/models",
17 | "app/database/migrations",
18 | "app/database/seeds",
19 | "app/tests/TestCase.php",
20 | "app/libraries/HelperFunc.php"
21 | ]
22 | },
23 | "scripts": {
24 | "post-install-cmd": [
25 | "php artisan clear-compiled",
26 | "php artisan optimize"
27 | ],
28 | "post-update-cmd": [
29 | "php artisan clear-compiled",
30 | "php artisan optimize"
31 | ],
32 | "post-create-project-cmd": [
33 | "php artisan key:generate"
34 | ]
35 | },
36 | "config": {
37 | "preferred-install": "dist"
38 | },
39 | "minimum-stability": "stable"
40 | }
41 |
--------------------------------------------------------------------------------
/css/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Webxity/ticket-management-system/3d8ee10d13b347b14e7e0b94c6549fe4b36d58aa/css/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/css/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Webxity/ticket-management-system/3d8ee10d13b347b14e7e0b94c6549fe4b36d58aa/css/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/css/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Webxity/ticket-management-system/3d8ee10d13b347b14e7e0b94c6549fe4b36d58aa/css/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/css/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Webxity/ticket-management-system/3d8ee10d13b347b14e7e0b94c6549fe4b36d58aa/css/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/css/fullcalendar.print.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * FullCalendar v2.2.5 Print Stylesheet
3 | * Docs & License: http://arshaw.com/fullcalendar/
4 | * (c) 2013 Adam Shaw
5 | */
6 |
7 | /*
8 | * Include this stylesheet on your page to get a more printer-friendly calendar.
9 | * When including this stylesheet, use the media='print' attribute of the tag.
10 | * Make sure to include this stylesheet IN ADDITION to the regular fullcalendar.css.
11 | */
12 |
13 | .fc {
14 | max-width: 100% !important;
15 | }
16 |
17 |
18 | /* Global Event Restyling
19 | --------------------------------------------------------------------------------------------------*/
20 |
21 | .fc-event {
22 | background: #fff !important;
23 | color: #000 !important;
24 | page-break-inside: avoid;
25 | }
26 |
27 | .fc-event .fc-resizer {
28 | display: none;
29 | }
30 |
31 |
32 | /* Table & Day-Row Restyling
33 | --------------------------------------------------------------------------------------------------*/
34 |
35 | th,
36 | td,
37 | hr,
38 | thead,
39 | tbody,
40 | .fc-row {
41 | border-color: #ccc !important;
42 | background: #fff !important;
43 | }
44 |
45 | /* kill the overlaid, absolutely-positioned common components */
46 | .fc-bg,
47 | .fc-bgevent-skeleton,
48 | .fc-highlight-skeleton,
49 | .fc-helper-skeleton {
50 | display: none;
51 | }
52 |
53 | /* don't force a min-height on rows (for DayGrid) */
54 | .fc tbody .fc-row {
55 | height: auto !important; /* undo height that JS set in distributeHeight */
56 | min-height: 0 !important; /* undo the min-height from each view's specific stylesheet */
57 | }
58 |
59 | .fc tbody .fc-row .fc-content-skeleton {
60 | position: static; /* undo .fc-rigid */
61 | padding-bottom: 0 !important; /* use a more border-friendly method for this... */
62 | }
63 |
64 | .fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td { /* only works in newer browsers */
65 | padding-bottom: 1em; /* ...gives space within the skeleton. also ensures min height in a way */
66 | }
67 |
68 | .fc tbody .fc-row .fc-content-skeleton table {
69 | /* provides a min-height for the row, but only effective for IE, which exaggerates this value,
70 | making it look more like 3em. for other browers, it will already be this tall */
71 | height: 1em;
72 | }
73 |
74 |
75 | /* Undo month-view event limiting. Display all events and hide the "more" links
76 | --------------------------------------------------------------------------------------------------*/
77 |
78 | .fc-more-cell,
79 | .fc-more {
80 | display: none !important;
81 | }
82 |
83 | .fc tr.fc-limited {
84 | display: table-row !important;
85 | }
86 |
87 | .fc td.fc-limited {
88 | display: table-cell !important;
89 | }
90 |
91 | .fc-popover {
92 | display: none; /* never display the "more.." popover in print mode */
93 | }
94 |
95 |
96 | /* TimeGrid Restyling
97 | --------------------------------------------------------------------------------------------------*/
98 |
99 | /* undo the min-height 100% trick used to fill the container's height */
100 | .fc-time-grid {
101 | min-height: 0 !important;
102 | }
103 |
104 | /* don't display the side axis at all ("all-day" and time cells) */
105 | .fc-agenda-view .fc-axis {
106 | display: none;
107 | }
108 |
109 | /* don't display the horizontal lines */
110 | .fc-slats,
111 | .fc-time-grid hr { /* this hr is used when height is underused and needs to be filled */
112 | display: none !important; /* important overrides inline declaration */
113 | }
114 |
115 | /* let the container that holds the events be naturally positioned and create real height */
116 | .fc-time-grid .fc-content-skeleton {
117 | position: static;
118 | }
119 |
120 | /* in case there are no events, we still want some height */
121 | .fc-time-grid .fc-content-skeleton table {
122 | height: 4em;
123 | }
124 |
125 | /* kill the horizontal spacing made by the event container. event margins will be done below */
126 | .fc-time-grid .fc-event-container {
127 | margin: 0 !important;
128 | }
129 |
130 |
131 | /* TimeGrid *Event* Restyling
132 | --------------------------------------------------------------------------------------------------*/
133 |
134 | /* naturally position events, vertically stacking them */
135 | .fc-time-grid .fc-event {
136 | position: static !important;
137 | margin: 3px 2px !important;
138 | }
139 |
140 | /* for events that continue to a future day, give the bottom border back */
141 | .fc-time-grid .fc-event.fc-not-end {
142 | border-bottom-width: 1px !important;
143 | }
144 |
145 | /* indicate the event continues via "..." text */
146 | .fc-time-grid .fc-event.fc-not-end:after {
147 | content: "...";
148 | }
149 |
150 | /* for events that are continuations from previous days, give the top border back */
151 | .fc-time-grid .fc-event.fc-not-start {
152 | border-top-width: 1px !important;
153 | }
154 |
155 | /* indicate the event is a continuation via "..." text */
156 | .fc-time-grid .fc-event.fc-not-start:before {
157 | content: "...";
158 | }
159 |
160 | /* time */
161 |
162 | /* undo a previous declaration and let the time text span to a second line */
163 | .fc-time-grid .fc-event .fc-time {
164 | white-space: normal !important;
165 | }
166 |
167 | /* hide the the time that is normally displayed... */
168 | .fc-time-grid .fc-event .fc-time span {
169 | display: none;
170 | }
171 |
172 | /* ...replace it with a more verbose version (includes AM/PM) stored in an html attribute */
173 | .fc-time-grid .fc-event .fc-time:after {
174 | content: attr(data-full);
175 | }
176 |
177 |
178 | /* Vertical Scroller & Containers
179 | --------------------------------------------------------------------------------------------------*/
180 |
181 | /* kill the scrollbars and allow natural height */
182 | .fc-scroller,
183 | .fc-day-grid-container, /* these divs might be assigned height, which we need to cleared */
184 | .fc-time-grid-container { /* */
185 | overflow: visible !important;
186 | height: auto !important;
187 | }
188 |
189 | /* kill the horizontal border/padding used to compensate for scrollbars */
190 | .fc-row {
191 | border: 0 !important;
192 | margin: 0 !important;
193 | }
194 |
195 |
196 | /* Button Controls
197 | --------------------------------------------------------------------------------------------------*/
198 |
199 | .fc-button-group,
200 | .fc button {
201 | display: none; /* don't display any button-related controls */
202 | }
203 |
--------------------------------------------------------------------------------
/css/login.css:
--------------------------------------------------------------------------------
1 | html, body {
2 | width: 100%;
3 | height: 100%;
4 | }
5 | .row {
6 | width: 100%;
7 | height: 100%;
8 | position: relative;
9 | }
10 | #login-box {
11 | position: absolute;
12 | margin-top: 10%;
13 | }
14 | #login-box .breadcrumb {
15 | border: 1px solid #ccc;
16 | border-radius: 5px;
17 | }
18 | .breadcrumb {
19 | padding: 15px;
20 | padding-top: 30px;
21 | margin: 0;
22 | }
23 | .page-header {
24 | padding-left: 40px;
25 | border-bottom: none;
26 | background-color: #222;
27 | margin: 0;
28 | }
29 | .page-header h1 {
30 | margin: 0;
31 | padding-top: 10px;
32 | padding-bottom: 10px;
33 | color: #ffffff;
34 | }
35 | @media screen and (min-width:0px) and (max-width: 500px){
36 | .container {
37 | width: 100%;
38 | }
39 | .page-header {
40 | padding-left: 20px;
41 |
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/css/sb-admin.css:
--------------------------------------------------------------------------------
1 | /*
2 | Author: Start Bootstrap - http://startbootstrap.com
3 | 'SB Admin' HTML Template by Start Bootstrap
4 |
5 | All Start Bootstrap themes are licensed under Apache 2.0.
6 | For more info and more free Bootstrap 3 HTML themes, visit http://startbootstrap.com!
7 | */
8 |
9 | /* ATTN: This is mobile first CSS - to update 786px and up screen width use the media query near the bottom of the document! */
10 |
11 | /* Global Styles */
12 |
13 | body {
14 | margin-top: 50px;
15 | }
16 |
17 | #wrapper {
18 | padding-left: 0;
19 | }
20 |
21 | #page-wrapper {
22 | width: 100%;
23 | padding: 5px 15px;
24 | }
25 |
26 | /* Nav Messages */
27 |
28 | .messages-dropdown .dropdown-menu .message-preview .avatar,
29 | .messages-dropdown .dropdown-menu .message-preview .name,
30 | .messages-dropdown .dropdown-menu .message-preview .message,
31 | .messages-dropdown .dropdown-menu .message-preview .time {
32 | display: block;
33 | }
34 |
35 | .messages-dropdown .dropdown-menu .message-preview .avatar {
36 | float: left;
37 | margin-right: 15px;
38 | }
39 |
40 | .messages-dropdown .dropdown-menu .message-preview .name {
41 | font-weight: bold;
42 | }
43 |
44 | .messages-dropdown .dropdown-menu .message-preview .message {
45 | font-size: 12px;
46 | }
47 |
48 | .messages-dropdown .dropdown-menu .message-preview .time {
49 | font-size: 12px;
50 | }
51 |
52 | /* Line Break */
53 | .line-break{
54 |
55 | max-width:900px;
56 |
57 | }
58 |
59 | /*Conversation Message*/
60 |
61 | .convo-message {
62 | background-color: rgba(243, 243, 243, 1);
63 |
64 | }
65 | /* Show ticket page */
66 |
67 | .show-ticket{
68 |
69 | margin-top:50px;
70 | }
71 |
72 |
73 | /* Nav Announcements */
74 |
75 | .announcement-heading {
76 | font-size: 50px;
77 | margin: 0;
78 | }
79 |
80 | .announcement-text {
81 | margin: 0;
82 | }
83 |
84 | /* Table Headers */
85 |
86 | table.tablesorter thead {
87 | cursor: pointer;
88 | }
89 |
90 | table.tablesorter thead tr th:hover {
91 | background-color: #f5f5f5;
92 | }
93 |
94 | /* Flot Chart Containers */
95 |
96 | .flot-chart {
97 | display: block;
98 | height: 400px;
99 | }
100 |
101 | .flot-chart-content {
102 | width: 100%;
103 | height: 100%;
104 | }
105 |
106 | /* Edit Below to Customize Widths > 768px */
107 | @media (min-width:768px) {
108 |
109 | /* Wrappers */
110 |
111 | #wrapper {
112 | padding-left: 225px;
113 | }
114 |
115 | #page-wrapper {
116 | padding: 15px 25px;
117 | }
118 |
119 | /* Side Nav */
120 |
121 | .side-nav {
122 | margin-left: -225px;
123 | left: 225px;
124 | width: 225px;
125 | position: fixed;
126 | top: 50px;
127 | height: 100%;
128 | border-radius: 0;
129 | border: none;
130 | background-color: #222222;
131 | overflow-y: auto;
132 | }
133 |
134 | /* Bootstrap Default Overrides - Customized Dropdowns for the Side Nav */
135 |
136 | .side-nav>li.dropdown>ul.dropdown-menu {
137 | position: relative;
138 | min-width: 225px;
139 | margin: 0;
140 | padding: 0;
141 | border: none;
142 | border-radius: 0;
143 | background-color: transparent;
144 | box-shadow: none;
145 | -webkit-box-shadow: none;
146 | }
147 |
148 | .side-nav>li.dropdown>ul.dropdown-menu>li>a {
149 | color: #999999;
150 | padding: 15px 15px 15px 25px;
151 | }
152 | .side-nav>li.dropdown>ul.dropdown-menu>li.active>a {
153 | color: #FFFFFF;
154 | }
155 |
156 | .side-nav>li.dropdown>ul.dropdown-menu>li>a:hover,
157 | .side-nav>li.dropdown>ul.dropdown-menu>li>a.active,
158 | .side-nav>li.dropdown>ul.dropdown-menu>li>a:focus {
159 | color: #fff;
160 | background-color: #080808;
161 | }
162 |
163 | .side-nav>li>a {
164 | width: 225px;
165 | }
166 |
167 | .navbar-inverse .navbar-nav>li>a:hover,
168 | .navbar-inverse .navbar-nav>li>a:focus {
169 | background-color: #080808;
170 | }
171 |
172 | /* Nav Messages */
173 |
174 | .messages-dropdown .dropdown-menu {
175 | min-width: 300px;
176 | }
177 |
178 | .messages-dropdown .dropdown-menu li a {
179 | white-space: normal;
180 | }
181 |
182 | .navbar-collapse {
183 | padding-left: 15px !important;
184 | padding-right: 15px !important;
185 | }
186 |
187 | }
188 |
--------------------------------------------------------------------------------
/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Webxity/ticket-management-system/3d8ee10d13b347b14e7e0b94c6549fe4b36d58aa/favicon.ico
--------------------------------------------------------------------------------
/images/ajax-loader.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Webxity/ticket-management-system/3d8ee10d13b347b14e7e0b94c6549fe4b36d58aa/images/ajax-loader.gif
--------------------------------------------------------------------------------
/index.php:
--------------------------------------------------------------------------------
1 |
7 | */
8 |
9 | /*
10 | |--------------------------------------------------------------------------
11 | | Register The Auto Loader
12 | |--------------------------------------------------------------------------
13 | |
14 | | Composer provides a convenient, automatically generated class loader
15 | | for our application. We just need to utilize it! We'll require it
16 | | into the script here so that we do not have to worry about the
17 | | loading of any our classes "manually". Feels great to relax.
18 | |
19 | */
20 |
21 | require __DIR__.'/bootstrap/autoload.php';
22 |
23 | /*
24 | |--------------------------------------------------------------------------
25 | | Turn On The Lights
26 | |--------------------------------------------------------------------------
27 | |
28 | | We need to illuminate PHP development, so let's turn on the lights.
29 | | This bootstraps the framework and gets it ready for use, then it
30 | | will load up this application so that we can run it and send
31 | | the responses back to the browser and delight these users.
32 | |
33 | */
34 |
35 | $app = require_once __DIR__.'/bootstrap/start.php';
36 |
37 | /*
38 | |--------------------------------------------------------------------------
39 | | Run The Application
40 | |--------------------------------------------------------------------------
41 | |
42 | | Once we have the application, we can simply call the run method,
43 | | which will execute the request and send the response back to
44 | | the client's browser allowing them to enjoy the creative
45 | | and wonderful application we have whipped up for them.
46 | |
47 | */
48 |
49 | $app->run();
50 |
--------------------------------------------------------------------------------
/js/flot/jquery.flot.resize.js:
--------------------------------------------------------------------------------
1 | /* Flot plugin for automatically redrawing plots as the placeholder resizes.
2 |
3 | Copyright (c) 2007-2013 IOLA and Ole Laursen.
4 | Licensed under the MIT license.
5 |
6 | It works by listening for changes on the placeholder div (through the jQuery
7 | resize event plugin) - if the size changes, it will redraw the plot.
8 |
9 | There are no options. If you need to disable the plugin for some plots, you
10 | can just fix the size of their placeholders.
11 |
12 | */
13 |
14 | /* Inline dependency:
15 | * jQuery resize event - v1.1 - 3/14/2010
16 | * http://benalman.com/projects/jquery-resize-plugin/
17 | *
18 | * Copyright (c) 2010 "Cowboy" Ben Alman
19 | * Dual licensed under the MIT and GPL licenses.
20 | * http://benalman.com/about/license/
21 | */
22 |
23 | (function($,h,c){var a=$([]),e=$.resize=$.extend($.resize,{}),i,k="setTimeout",j="resize",d=j+"-special-event",b="delay",f="throttleWindow";e[b]=250;e[f]=true;$.event.special[j]={setup:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.add(l);$.data(this,d,{w:l.width(),h:l.height()});if(a.length===1){g()}},teardown:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.not(l);l.removeData(d);if(!a.length){clearTimeout(i)}},add:function(l){if(!e[f]&&this[k]){return false}var n;function m(s,o,p){var q=$(this),r=$.data(this,d);r.w=o!==c?o:q.width();r.h=p!==c?p:q.height();n.apply(this,arguments)}if($.isFunction(l)){n=l;return m}else{n=l.handler;l.handler=m}}};function g(){i=h[k](function(){a.each(function(){var n=$(this),m=n.width(),l=n.height(),o=$.data(this,d);if(m!==o.w||l!==o.h){n.trigger(j,[o.w=m,o.h=l])}});g()},e[b])}})(jQuery,this);
24 |
25 | (function ($) {
26 | var options = { }; // no options
27 |
28 | function init(plot) {
29 | function onResize() {
30 | var placeholder = plot.getPlaceholder();
31 |
32 | // somebody might have hidden us and we can't plot
33 | // when we don't have the dimensions
34 | if (placeholder.width() == 0 || placeholder.height() == 0)
35 | return;
36 |
37 | plot.resize();
38 | plot.setupGrid();
39 | plot.draw();
40 | }
41 |
42 | function bindEvents(plot, eventHolder) {
43 | plot.getPlaceholder().resize(onResize);
44 | }
45 |
46 | function shutdown(plot, eventHolder) {
47 | plot.getPlaceholder().unbind("resize", onResize);
48 | }
49 |
50 | plot.hooks.bindEvents.push(bindEvents);
51 | plot.hooks.shutdown.push(shutdown);
52 | }
53 |
54 | $.plot.plugins.push({
55 | init: init,
56 | options: options,
57 | name: 'resize',
58 | version: '1.0'
59 | });
60 | })(jQuery);
--------------------------------------------------------------------------------
/js/flot/jquery.flot.tooltip.min.js:
--------------------------------------------------------------------------------
1 | /*
2 | * jquery.flot.tooltip
3 | *
4 | * description: easy-to-use tooltips for Flot charts
5 | * version: 0.6.2
6 | * author: Krzysztof Urbas @krzysu [myviews.pl]
7 | * website: https://github.com/krzysu/flot.tooltip
8 | *
9 | * build on 2013-09-30
10 | * released under MIT License, 2012
11 | */
12 | (function(t){var o={tooltip:!1,tooltipOpts:{content:"%s | X: %x | Y: %y",xDateFormat:null,yDateFormat:null,shifts:{x:10,y:20},defaultTheme:!0,onHover:function(){}}},i=function(t){this.tipPosition={x:0,y:0},this.init(t)};i.prototype.init=function(o){function i(t){var o={};o.x=t.pageX,o.y=t.pageY,s.updateTooltipPosition(o)}function e(t,o,i){var e=s.getDomElement();if(i){var n;n=s.stringFormat(s.tooltipOptions.content,i),e.html(n),s.updateTooltipPosition({x:o.pageX,y:o.pageY}),e.css({left:s.tipPosition.x+s.tooltipOptions.shifts.x,top:s.tipPosition.y+s.tooltipOptions.shifts.y}).show(),"function"==typeof s.tooltipOptions.onHover&&s.tooltipOptions.onHover(i,e)}else e.hide().html("")}var s=this;o.hooks.bindEvents.push(function(o,n){s.plotOptions=o.getOptions(),s.plotOptions.tooltip!==!1&&void 0!==s.plotOptions.tooltip&&(s.tooltipOptions=s.plotOptions.tooltipOpts,s.getDomElement(),t(o.getPlaceholder()).bind("plothover",e),t(n).bind("mousemove",i))}),o.hooks.shutdown.push(function(o,s){t(o.getPlaceholder()).unbind("plothover",e),t(s).unbind("mousemove",i)})},i.prototype.getDomElement=function(){var o;return t("#flotTip").length>0?o=t("#flotTip"):(o=t("
").attr("id","flotTip"),o.appendTo("body").hide().css({position:"absolute"}),this.tooltipOptions.defaultTheme&&o.css({background:"#fff","z-index":"100",padding:"0.4em 0.6em","border-radius":"0.5em","font-size":"0.8em",border:"1px solid #111",display:"none","white-space":"nowrap"})),o},i.prototype.updateTooltipPosition=function(o){var i=t("#flotTip").outerWidth()+this.tooltipOptions.shifts.x,e=t("#flotTip").outerHeight()+this.tooltipOptions.shifts.y;o.x-t(window).scrollLeft()>t(window).innerWidth()-i&&(o.x-=i),o.y-t(window).scrollTop()>t(window).innerHeight()-e&&(o.y-=e),this.tipPosition.x=o.x,this.tipPosition.y=o.y},i.prototype.stringFormat=function(t,o){var i=/%p\.{0,1}(\d{0,})/,e=/%s/,s=/%x\.{0,1}(?:\d{0,})/,n=/%y\.{0,1}(?:\d{0,})/;return"function"==typeof t&&(t=t(o.series.label,o.series.data[o.dataIndex][0],o.series.data[o.dataIndex][1],o)),o.series.percent!==void 0&&(t=this.adjustValPrecision(i,t,o.series.percent)),o.series.label!==void 0&&(t=t.replace(e,o.series.label)),this.isTimeMode("xaxis",o)&&this.isXDateFormat(o)&&(t=t.replace(s,this.timestampToDate(o.series.data[o.dataIndex][0],this.tooltipOptions.xDateFormat))),this.isTimeMode("yaxis",o)&&this.isYDateFormat(o)&&(t=t.replace(n,this.timestampToDate(o.series.data[o.dataIndex][1],this.tooltipOptions.yDateFormat))),"number"==typeof o.series.data[o.dataIndex][0]&&(t=this.adjustValPrecision(s,t,o.series.data[o.dataIndex][0])),"number"==typeof o.series.data[o.dataIndex][1]&&(t=this.adjustValPrecision(n,t,o.series.data[o.dataIndex][1])),o.series.xaxis.tickFormatter!==void 0&&(t=t.replace(s,o.series.xaxis.tickFormatter(o.series.data[o.dataIndex][0],o.series.xaxis))),o.series.yaxis.tickFormatter!==void 0&&(t=t.replace(n,o.series.yaxis.tickFormatter(o.series.data[o.dataIndex][1],o.series.yaxis))),t},i.prototype.isTimeMode=function(t,o){return o.series[t].options.mode!==void 0&&"time"===o.series[t].options.mode},i.prototype.isXDateFormat=function(){return this.tooltipOptions.xDateFormat!==void 0&&null!==this.tooltipOptions.xDateFormat},i.prototype.isYDateFormat=function(){return this.tooltipOptions.yDateFormat!==void 0&&null!==this.tooltipOptions.yDateFormat},i.prototype.timestampToDate=function(o,i){var e=new Date(o);return t.plot.formatDate(e,i)},i.prototype.adjustValPrecision=function(t,o,i){var e,s=o.match(t);return null!==s&&""!==RegExp.$1&&(e=RegExp.$1,i=i.toFixed(e),o=o.replace(t,i)),o};var e=function(t){new i(t)};t.plot.plugins.push({init:e,options:o,name:"tooltip",version:"0.6.1"})})(jQuery);
--------------------------------------------------------------------------------
/js/init.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by Rw.
3 | * @author Rw
4 | * @year 2014
5 | */
6 |
7 | (function ($) {
8 |
9 | // extend object with other object
10 | var _extend = function (defaults, options) {
11 | if (typeof defaults !== "object" || typeof options !== "object") {
12 | return {};
13 | }
14 |
15 | for (var i in options) {
16 | if (options.hasOwnProperty(i)) {
17 | for (var x in defaults) {
18 | if (x !== i) {
19 | defaults[i] = options[i];
20 | }
21 | }
22 | }
23 | }
24 |
25 | return defaults;
26 | },
27 | // Check given variable is array
28 | isArray = function(__var) {
29 | if (Object.prototype.toString.call(__var) === '[object Array]') {
30 | return true;
31 | }
32 | return false;
33 | };
34 |
35 | // Pushify
36 | var pushify = function (pushed) {
37 | var self = $(this),
38 | pushed = pushed || true,
39 | re = new RegExp(location.origin + '\/');
40 |
41 | $('.navbar-nav li').removeClass('active');
42 | self.closest('li').addClass('active');
43 |
44 | var anchorURL = ($(this).attr('href') || location.href);
45 |
46 | if (anchorURL.indexOf(location.origin) < 0) {
47 | location.href = anchorURL;
48 | }
49 |
50 | if (pushed != "false") {
51 | history.pushState(null, null, anchorURL);
52 | }
53 |
54 | var data = {
55 | requested: location.href,
56 | _token: __tmsOBJ._token
57 | };
58 |
59 | if (self.data('action')) {
60 | data.action = self.data('action');
61 | }
62 |
63 | $.ajax({
64 | type: 'GET',
65 | url: __tmsOBJ.__tmsBaseURI + '/ajax',
66 | data: data,
67 | error: function(jqxhr, status, data) {
68 | switch (jqxhr.status) {
69 | case 401:
70 | window.location.replace(__tmsOBJ.__tmsBaseURI + '/login');
71 | break;
72 | default:
73 | break;
74 | }
75 | },
76 | complete: function (data) {
77 | try {
78 | var jsonData = JSON.parse(data.responseText);
79 | switch (jsonData.action) {
80 | case 'logout':
81 | history.pushState(null, null, __tmsOBJ.__tmsBaseURI + '/login');
82 | document.write(jsonData.template);
83 | break;
84 | default:
85 | break;
86 | }
87 | } catch (e) {
88 | $('#page-wrapper').empty().html(data.responseText);
89 | }
90 | tableSorter()
91 | }
92 | });
93 | };
94 |
95 | $(document).on('click', 'a', function (e) {
96 | e.preventDefault();
97 |
98 | var self = $(this),
99 | invalidhref = [
100 | "#",
101 | "javascript",
102 | "file",
103 | "ftp",
104 | "sftp"
105 | ],
106 | determineInvalid = false;
107 |
108 | invalidhref.map(function(value) {
109 | if (self.prop('href').indexOf(value) > -1) {
110 | determineInvalid = true;
111 | return false;
112 | }
113 | });
114 |
115 | if (determineInvalid === false) {
116 | pushify.call(this);
117 | }
118 | });
119 |
120 | $(window).bind('popstate', function(e) {
121 | pushify.call(this, "false");
122 | });
123 |
124 | // Script for table sort plugin//
125 | function tableSorter() {
126 | $("table").tablesorter();
127 | }
128 |
129 | tableSorter();
130 |
131 | ///// Script for handling delete ///
132 | $(document).on("click", "#project-table .btn.btn-danger", function(e) {
133 |
134 | e.preventDefault();
135 | var self = $(this);
136 |
137 | $.post(
138 | __tmsOBJ.__tmsBaseURI + '/delete-record',
139 | {
140 | "_token": $( this ).attr( 'data-session-id' ) ,
141 | "id": $( this ).attr( 'data-delete-id' ) ,
142 | "page" : $( this ).attr( 'data-page' )
143 | }, function() {
144 | self.closest('tr').remove();
145 | });
146 |
147 | });
148 |
149 |
150 |
151 | ///// Script for handling Convo Messages ///
152 | $(document).on("click", "#convo-message", function(e) {
153 |
154 | e.preventDefault();
155 | var self = $(this);
156 |
157 | var ticket_id = $("#ticket-id").val() ;
158 | var msg = $("#text-box").val() ;
159 | var _token = $("input[name='_token']").val() ;
160 | var user_id = $("#user-id").val() ;
161 | $.post(
162 | __tmsOBJ.__tmsBaseURI + '/convo-message',
163 | {
164 | "_token":_token ,
165 | "msg":msg ,
166 | "ticket_id" : ticket_id,
167 | "user_id" : user_id
168 | }, function(data) {
169 |
170 | if(data!=="invalid input")
171 | {
172 | var obj = $.parseJSON(data) ;
173 |
174 | var html = '' +
175 | obj.msg +'.
'+ ' By ' + obj.name + ' At ' + obj.time +' ';
176 |
177 | $( "#convo-box" ).append(html);
178 | $("#not-available").remove();
179 | } else { $( "#error-msg" ).show(); }
180 | });
181 |
182 |
183 | });
184 |
185 | var alreadyOpened = false;
186 | $("#ticket_bread").click(function(){
187 | if (!alreadyOpened) {
188 | alreadyOpened = false;
189 | $("ul.side-nav").children().eq(1).toggleClass("open");
190 |
191 | } else {
192 | alreadyOpened = true;
193 | //$("ul.side-nav").children().eq(1).removeClass("open");
194 | }
195 | });
196 |
197 |
198 |
199 |
200 | /*var select = document.getElementById("components");
201 | select.onchange = function(){
202 | var selected_value = select.options[select.selectedIndex].value;
203 |
204 | if(selected_value=="empty") {
205 | // $("#privatecourse").val('no');}
206 |
207 | }
208 | }
209 | */
210 | }(jQuery));
--------------------------------------------------------------------------------
/js/morris/chart-data-morris.js:
--------------------------------------------------------------------------------
1 | // First Chart Example - Area Line Chart
2 |
3 | Morris.Area({
4 | // ID of the element in which to draw the chart.
5 | element: 'morris-chart-area',
6 | // Chart data records -- each entry in this array corresponds to a point on
7 | // the chart.
8 | data: [
9 | { d: '2012-10-01', visits: 802 },
10 | { d: '2012-10-02', visits: 783 },
11 | { d: '2012-10-03', visits: 820 },
12 | { d: '2012-10-04', visits: 839 },
13 | { d: '2012-10-05', visits: 792 },
14 | { d: '2012-10-06', visits: 859 },
15 | { d: '2012-10-07', visits: 790 },
16 | { d: '2012-10-08', visits: 1680 },
17 | { d: '2012-10-09', visits: 1592 },
18 | { d: '2012-10-10', visits: 1420 },
19 | { d: '2012-10-11', visits: 882 },
20 | { d: '2012-10-12', visits: 889 },
21 | { d: '2012-10-13', visits: 819 },
22 | { d: '2012-10-14', visits: 849 },
23 | { d: '2012-10-15', visits: 870 },
24 | { d: '2012-10-16', visits: 1063 },
25 | { d: '2012-10-17', visits: 1192 },
26 | { d: '2012-10-18', visits: 1224 },
27 | { d: '2012-10-19', visits: 1329 },
28 | { d: '2012-10-20', visits: 1329 },
29 | { d: '2012-10-21', visits: 1239 },
30 | { d: '2012-10-22', visits: 1190 },
31 | { d: '2012-10-23', visits: 1312 },
32 | { d: '2012-10-24', visits: 1293 },
33 | { d: '2012-10-25', visits: 1283 },
34 | { d: '2012-10-26', visits: 1248 },
35 | { d: '2012-10-27', visits: 1323 },
36 | { d: '2012-10-28', visits: 1390 },
37 | { d: '2012-10-29', visits: 1420 },
38 | { d: '2012-10-30', visits: 1529 },
39 | { d: '2012-10-31', visits: 1892 },
40 | ],
41 | // The name of the data record attribute that contains x-visitss.
42 | xkey: 'd',
43 | // A list of names of data record attributes that contain y-visitss.
44 | ykeys: ['visits'],
45 | // Labels for the ykeys -- will be displayed when you hover over the
46 | // chart.
47 | labels: ['Visits'],
48 | // Disables line smoothing
49 | smooth: false,
50 | });
51 |
52 | Morris.Donut({
53 | element: 'morris-chart-donut',
54 | data: [
55 | {label: "Referral", value: 42.7},
56 | {label: "Direct", value: 8.3},
57 | {label: "Social", value: 12.8},
58 | {label: "Organic", value: 36.2}
59 | ],
60 | formatter: function (y) { return y + "%" ;}
61 | });
62 |
63 | Morris.Line({
64 | // ID of the element in which to draw the chart.
65 | element: 'morris-chart-line',
66 | // Chart data records -- each entry in this array corresponds to a point on
67 | // the chart.
68 | data: [
69 | { d: '2012-10-01', visits: 802 },
70 | { d: '2012-10-02', visits: 783 },
71 | { d: '2012-10-03', visits: 820 },
72 | { d: '2012-10-04', visits: 839 },
73 | { d: '2012-10-05', visits: 792 },
74 | { d: '2012-10-06', visits: 859 },
75 | { d: '2012-10-07', visits: 790 },
76 | { d: '2012-10-08', visits: 1680 },
77 | { d: '2012-10-09', visits: 1592 },
78 | { d: '2012-10-10', visits: 1420 },
79 | { d: '2012-10-11', visits: 882 },
80 | { d: '2012-10-12', visits: 889 },
81 | { d: '2012-10-13', visits: 819 },
82 | { d: '2012-10-14', visits: 849 },
83 | { d: '2012-10-15', visits: 870 },
84 | { d: '2012-10-16', visits: 1063 },
85 | { d: '2012-10-17', visits: 1192 },
86 | { d: '2012-10-18', visits: 1224 },
87 | { d: '2012-10-19', visits: 1329 },
88 | { d: '2012-10-20', visits: 1329 },
89 | { d: '2012-10-21', visits: 1239 },
90 | { d: '2012-10-22', visits: 1190 },
91 | { d: '2012-10-23', visits: 1312 },
92 | { d: '2012-10-24', visits: 1293 },
93 | { d: '2012-10-25', visits: 1283 },
94 | { d: '2012-10-26', visits: 1248 },
95 | { d: '2012-10-27', visits: 1323 },
96 | { d: '2012-10-28', visits: 1390 },
97 | { d: '2012-10-29', visits: 1420 },
98 | { d: '2012-10-30', visits: 1529 },
99 | { d: '2012-10-31', visits: 1892 },
100 | ],
101 | // The name of the data record attribute that contains x-visitss.
102 | xkey: 'd',
103 | // A list of names of data record attributes that contain y-visitss.
104 | ykeys: ['visits'],
105 | // Labels for the ykeys -- will be displayed when you hover over the
106 | // chart.
107 | labels: ['Visits'],
108 | // Disables line smoothing
109 | smooth: false,
110 | });
111 |
112 | Morris.Bar ({
113 | element: 'morris-chart-bar',
114 | data: [
115 | {device: 'iPhone', geekbench: 136},
116 | {device: 'iPhone 3G', geekbench: 137},
117 | {device: 'iPhone 3GS', geekbench: 275},
118 | {device: 'iPhone 4', geekbench: 380},
119 | {device: 'iPhone 4S', geekbench: 655},
120 | {device: 'iPhone 5', geekbench: 1571}
121 | ],
122 | xkey: 'device',
123 | ykeys: ['geekbench'],
124 | labels: ['Geekbench'],
125 | barRatio: 0.4,
126 | xLabelAngle: 35,
127 | hideHover: 'auto'
128 | });
129 |
--------------------------------------------------------------------------------
/js/tablesorter/tables.js:
--------------------------------------------------------------------------------
1 | $(function() {
2 | $("table").tablesorter({debug: true});
3 | });
4 |
--------------------------------------------------------------------------------
/packages/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Webxity/ticket-management-system/3d8ee10d13b347b14e7e0b94c6549fe4b36d58aa/packages/.gitkeep
--------------------------------------------------------------------------------
/phpunit.xml:
--------------------------------------------------------------------------------
1 |
2 |
13 |
14 |
15 | ./app/tests/
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/public/.htaccess:
--------------------------------------------------------------------------------
1 |
2 |
3 | Options -MultiViews
4 |
5 |
6 | RewriteEngine On
7 |
8 | # Redirect Trailing Slashes...
9 | RewriteRule ^(.*)/$ /$1 [L,R=301]
10 |
11 | # Handle Front Controller...
12 | RewriteCond %{REQUEST_FILENAME} !-d
13 | RewriteCond %{REQUEST_FILENAME} !-f
14 | RewriteRule ^ index.php [L]
15 |
16 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Webxity/ticket-management-system/3d8ee10d13b347b14e7e0b94c6549fe4b36d58aa/public/favicon.ico
--------------------------------------------------------------------------------
/public/index.php:
--------------------------------------------------------------------------------
1 |
7 | */
8 |
9 | /*
10 | |--------------------------------------------------------------------------
11 | | Register The Auto Loader
12 | |--------------------------------------------------------------------------
13 | |
14 | | Composer provides a convenient, automatically generated class loader
15 | | for our application. We just need to utilize it! We'll require it
16 | | into the script here so that we do not have to worry about the
17 | | loading of any our classes "manually". Feels great to relax.
18 | |
19 | */
20 |
21 | require __DIR__.'/../bootstrap/autoload.php';
22 |
23 | /*
24 | |--------------------------------------------------------------------------
25 | | Turn On The Lights
26 | |--------------------------------------------------------------------------
27 | |
28 | | We need to illuminate PHP development, so let's turn on the lights.
29 | | This bootstraps the framework and gets it ready for use, then it
30 | | will load up this application so that we can run it and send
31 | | the responses back to the browser and delight these users.
32 | |
33 | */
34 |
35 | $app = require_once __DIR__.'/../bootstrap/start.php';
36 |
37 | /*
38 | |--------------------------------------------------------------------------
39 | | Run The Application
40 | |--------------------------------------------------------------------------
41 | |
42 | | Once we have the application, we can simply call the run method,
43 | | which will execute the request and send the response back to
44 | | the client's browser allowing them to enjoy the creative
45 | | and wonderful application we have whipped up for them.
46 | |
47 | */
48 |
49 | $app->run();
50 |
--------------------------------------------------------------------------------
/public/packages/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Webxity/ticket-management-system/3d8ee10d13b347b14e7e0b94c6549fe4b36d58aa/public/packages/.gitkeep
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Webxity/ticket-management-system/3d8ee10d13b347b14e7e0b94c6549fe4b36d58aa/readme.md
--------------------------------------------------------------------------------
/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/server.php:
--------------------------------------------------------------------------------
1 |