├── LICENSE ├── README.md ├── mysql_setup.sql ├── setup-server.md └── source ├── album.css ├── carousel.css ├── favicon.ico ├── footer.php ├── header.php ├── include ├── carousel_bg_future.jpg ├── carousel_bg_layots.jpg ├── carousel_bg_layouts.jpg ├── carousel_bg_styles.jpg ├── carousel_bg_styles.png ├── db_connect.inc.php ├── db_connect.php ├── layout_edit.inc.php ├── layout_submit.inc.php ├── login.inc.php ├── logout.inc.php ├── marketing_bg_future.png ├── marketing_bg_layouts.png ├── marketing_bg_styles.png ├── recover.inc.php ├── signup.inc.php ├── style_edit.inc.php └── style_submit.inc.php ├── index.php ├── layout_edit.php ├── layout_submit.php ├── layouts.php ├── layouts ├── images │ ├── 5f2ea4ecd2bda6.55720649.jpg │ ├── 5f2ea54ce44388.34804648.jpg │ ├── 5f2ea5f98a5464.63480178.jpg │ ├── 5f2ea70884d192.51494044.jpg │ ├── 5f2eae93174540.49168187.jpg │ ├── 5f2eafcd518d27.51669229.png │ ├── 5f2eb619e1ee50.29674482.png │ ├── 5f2f99abe5c4e0.37617526.jpg │ ├── 5f2f9a8be01522.74046234.jpg │ └── 5f2f9ea669c4f4.16900436.jpg └── resources │ ├── 5f2ea4ecd2bd21.75364095.qpt │ ├── 5f2ea54ce442b5.33477222.qpt │ ├── 5f2ea5f98a53e1.56763458.qpt │ ├── 5f2ea70884d101.74067897.qpt │ ├── 5f2eae93174493.47577054.qpt │ ├── 5f2eafcd518c84.31834074.qpt │ ├── 5f2eb619e1eda7.23049489.qpt │ ├── 5f2f99abe5c471.47526868.qpt │ ├── 5f2f9a8be01496.24803415.qpt │ └── 5f2f9ea669c487.31156090.qpt ├── signup.php ├── style_edit.php ├── style_submit.php ├── styles.php ├── styles ├── images │ ├── 5f2ac8e21402a4.97545666.jpg │ ├── 5f2b028244e595.02806186.png │ ├── 5f2b33ee30fa63.26828068.jpeg │ ├── 5f2c31183d61c6.77483439.png │ ├── 5f2dd3fe213194.63332282.jpg │ ├── 5f2ec31ea09265.72627163.png │ ├── Revision.png │ ├── Screenshot from 2020-07-15 10-58-42.png │ ├── Screenshot from 2020-07-15 15-09-48.png │ ├── Screenshot from 2020-07-15 18-22-05.png │ ├── Screenshot from 2020-07-16 10-12-36.png │ ├── Screenshot from 2020-07-18 11-11-17.png │ ├── Screenshot from 2020-07-20 14-09-41.png │ ├── Screenshot from 2020-07-21 15-34-02.png │ ├── Screenshot from 2020-08-01 20-33-49.png │ ├── Screenshot from 2020-08-03 18-46-42.png │ ├── cool_lakes_pattern.jpg │ ├── denim.jpg │ ├── organic_blocks.jpg │ ├── pen.png │ ├── pencil.png │ ├── readme.md │ ├── sharpie.png │ └── wallpaper-70s.jpg ├── index.php └── resources │ ├── 5f2ac8e2140216.09033704.xml │ ├── 5f2b028244e4f1.91634423.xml │ ├── 5f2b33ee30f9d4.93708272.xml │ ├── 5f2c31183d6119.64859341.xml │ ├── 5f2dd3fe2130e3.56895725.xml │ ├── 5f2ec31ea091c2.42912362.xml │ ├── 70s_wallpaper.xml │ ├── CAD Revision cloud.xml │ ├── Cool_Water_Area.xml │ ├── Measure.xml │ ├── Pencil.xml │ ├── Sharpie.xml │ ├── ballpoint_pen.xml │ ├── barb_wire.xml │ ├── cross_stitch.xml │ ├── cubes.xml │ ├── denim.xml │ ├── dormido_rough.xml │ ├── mattress.xml │ ├── organic_blocks.xml │ ├── panel.xml │ ├── readme.md │ ├── rock_crystal.xml │ └── zipper.xml └── users.php /README.md: -------------------------------------------------------------------------------- 1 | # Hub Server 2 | 3 | The Hub Server is a community portal for sharing single file resources for QGIS. It requires minimum effort to share files, and is simple to browse and download the resources to your personal QGIS installation. 4 | 5 | To setup the server you will need a 'LAMP' server (Linux, Apache, MySQL, PHP) or equivalent. There's a separate instruction for how you can setup a server on Ubuntu Linux further down. 6 | 7 | The code you will use on your server (/var/www/hub/) is located in the "source" folder. 8 | 9 | ## Setup Server 10 | 11 | For the development a standard database user is used. 12 | 13 | User: _user_ 14 | 15 | Password: _1#Password_ 16 | 17 | [Setup server instructions](https://github.com/style-hub/hub-server/blob/master/setup-server.md) 18 | 19 | To create tables in the database, use the _mysql_setup.sql_ script. 20 | 21 | ``` 22 | mysql -u user -p < mysql_setup.sql 23 | ``` 24 | 25 | Note that uploads of files to the server only works if the folders are set with sufficient permissions to "write". __(Warning)__ 26 | 27 | ## Project goals 28 | 29 | Build a web site with hubs that manage community contributed files for style, layout and maybe more. 30 | 31 | The goal is to create a site that requires very little from the contributor and makes it as effortless at possible to download and use the resources. 32 | 33 | Simple to search or browse, preview and download. Form based user contributions with minimal work required. 34 | 35 | There will likely be a need for some contributor verification, but it should be kept at a minimum. 36 | 37 | ## Project todo list 38 | 39 | * Project Structure! 40 | * Style guides? 41 | * Design guides? (How should the code look) 42 | * Landing site 43 | * Multiple hubs 44 | * Similar content and use 45 | * One place to land and get instructions 46 | * Filter and search using PHP 47 | * Probably also database table expansion 48 | * When most is working with the "Style Hub", start on "Layout Hub" 49 | 50 | ## Why not use the Resource Sharing Plugin? 51 | 52 | This is NOT a replacement for the plugin. But it is a way to significantly lower the bar for the majority of ordinary users to contribute, but also find and download the resources. Some resources is definitely not suitable to manage with a "hub" site. And the resources on a hub could easily be pulled to a resource sharing repository and shared that way too. 53 | 54 | ## Contribute to the project 55 | 56 | You can fork and create pull requests as usual for a GitHub project. 57 | 58 | If you want to engage more you can become a developer with direct commit rights. 59 | 60 | (But in that case I guess we need to create more guidelines for the goal of the project.) 61 | 62 | ## Site structure 63 | 64 | In the _root_ folder (source) the main file is _index.php_. All pages, including _index.php_ use the _header.php_ and _footer.php_. 65 | 66 | In the _include_ folder there's mostly pure php files. These manage tasks like updata a database, add a style to the database, upload a file, add a user, etc. 67 | 68 | One important file in _include_ is __db_connect.inc.php__. This is the only place where settings for connecting to the MySQL database needs to be done. All other pages that require the connection "calls" this file with a _require()_ function. 69 | 70 | Each _Hub_ also have a folder attached to it. In this folder are uploaded resources connected to the hub located. In the case of _styles_ there's two sub-folders, _images_ and _resources_. In the _images_ folder preview images are located, and in the _resources_ folder the style-xml files are located. These folders need to have appropriate _rights_ set for the upload to work. -------------------------------------------------------------------------------- /mysql_setup.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE hub.styles ( 2 | id INT(9) NOT NULL PRIMARY KEY AUTO_INCREMENT, 3 | stylename VARCHAR(50) NOT NULL, 4 | stylecreator VARCHAR(50) NOT NULL, 5 | styledescription VARCHAR(512) NOT NULL, 6 | stylexml VARCHAR(255) NOT NULL, 7 | stylepreview VARCHAR(255) NOT NULL, 8 | byuser VARCHAR(50), 9 | ismarker TINYINT(1), 10 | isline TINYINT(1), 11 | isfill TINYINT(1), 12 | isramp TINYINT(1), 13 | istext TINYINT(1), 14 | islabel TINYINT(1), 15 | ispatch TINYINT(1), 16 | popular INT(11) 17 | ); 18 | 19 | CREATE TABLE hub.layouts ( 20 | id INT(9) NOT NULL PRIMARY KEY AUTO_INCREMENT, 21 | layoutname VARCHAR(50) NOT NULL, 22 | layoutcreator VARCHAR(50) NOT NULL, 23 | layoutdescription VARCHAR(512) NOT NULL, 24 | layoutqpt VARCHAR(255) NOT NULL, 25 | layoutpreview VARCHAR(255) NOT NULL, 26 | byuser VARCHAR(50), 27 | istiny TINYINT(1), 28 | issmall TINYINT(1), 29 | ismedium TINYINT(1), 30 | islarge TINYINT(1), 31 | isscreen TINYINT(1), 32 | iselement TINYINT(1), 33 | popular INT(11) 34 | ); 35 | 36 | CREATE TABLE hub.users ( 37 | id INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, 38 | username VARCHAR(50) NOT NULL, 39 | useremail VARCHAR(100) NOT NULL, 40 | userpwd VARCHAR(255) NOT NULL, 41 | moderator TINYINT(1) 42 | ); 43 | -------------------------------------------------------------------------------- /setup-server.md: -------------------------------------------------------------------------------- 1 | # Setup a server 2 | 3 | Linux-Apache-MySQL-PHP (LAMP) 4 | 5 | ## Install Ubuntu Server 6 | 7 | Include SSH Server 8 | 9 | Update all packages 10 | 11 | ``` 12 | sudo apt update && sudo apt upgrade 13 | ``` 14 | 15 | Enable Firewall with OpenSSH allowed (if you need to connect to the server using SSH) 16 | ``` 17 | sudo ufw allow in "OpenSSH" 18 | sudo ufw enable 19 | ``` 20 | 21 | ## Install Apache web server 22 | 23 | ``` 24 | sudo apt install apache2 25 | ``` 26 | 27 | Open the firewall for testing on port 80 (not for production server) 28 | ``` 29 | sudo ufw allow in "Apache" 30 | ``` 31 | 32 | Verify firewall 33 | ``` 34 | sudo ufw status 35 | ``` 36 | 37 | Check the server IP 38 | ``` 39 | ip addr 40 | ``` 41 | 42 | Verify Apache server running from web browser on the network. 43 | ``` 44 | http://[ip address] 45 | ``` 46 | 47 | ## Install and setup MySQL 48 | ``` 49 | sudo apt install mysql-serve 50 | sudo mysql_secure_installation 51 | ``` 52 | 53 | You choose if you want/need the security that is initiated by the seccond command. 54 | 55 | ## Install PHP 56 | ``` 57 | sudo apt install php libapache2-mod-php php-mysql 58 | ``` 59 | 60 | Verify installation 61 | ``` 62 | php -v 63 | ``` 64 | 65 | ## Set up a "domain" to work in. Leaving the default for anything else. 66 | ``` 67 | sudo mkdir /var/www/hub 68 | sudo chown -R $USER:$USER /var/www/hub 69 | ``` 70 | 71 | Configure Apache to find the site 72 | ``` 73 | sudo nano /etc/apache2/sites-available/hub.conf 74 | ``` 75 | 76 | Add basic setup. 77 | ``` 78 | 79 | ServerName # 80 | ServerAlias # 81 | ServerAdmin webmaster@localhost 82 | DocumentRoot /var/www/hub 83 | ErrorLog ${APACHE_LOG_DIR}/error.log 84 | CustomLog ${APACHE_LOG_DIR}/access.log combined 85 | 86 | ``` 87 | 88 | Enable the site 89 | ``` 90 | sudo a2ensite hub 91 | ``` 92 | 93 | Dissable default site 94 | ``` 95 | sudo a2dissite 000-default 96 | ``` 97 | 98 | Test it 99 | ``` 100 | sudo apache2ctl configtest 101 | ``` 102 | 103 | Reload it 104 | ``` 105 | sudo systemctl reload apache2 106 | ``` 107 | 108 | Set up an initial landing site in the web-root 109 | ``` 110 | sudo nano /var/www/hub/index.htm 111 | ``` 112 | 113 | Verify with external browser pointed at the server ip 114 | 115 | Test PHP 116 | ``` 117 | sudo nano /var/www/hub/index.php 118 | ``` 119 | 120 | Add the folowing 121 | ``` 122 | TODO
    "; 176 | foreach($db->query("SELECT content FROM $table") as $row) { 177 | echo "
  1. " . $row['content'] . "
  2. "; 178 | } 179 | echo "
"; 180 | } catch (PDOException $e) { 181 | print "Error!: " . $e->getMessage() . "
"; 182 | die(); 183 | } 184 | ``` 185 | 186 | Again, verify you have access to the table from the browser. 187 | 188 | Now all is basically set for you to create php sites with database access. 189 | 190 | ## SSH 191 | 192 | To connect to your server it is convenient to use ssh. 193 | From the remote client connect with 194 | ``` 195 | ssh server_user@server_ip 196 | ``` 197 | 198 | Then "exit" back to the remote. 199 | Generate a suitable key and copy to server 200 | ``` 201 | ssh-keygen -t rsa -b 4096 202 | ssh-copy-id -i .ssh/id_rsa server_user@server_ip 203 | ``` 204 | 205 | Verify with password onece more, and then you should be able to use ssh from the remote without manual authentication. 206 | 207 | To sync files to the server over ssh you can use RSync. 208 | Install on both server and client 209 | ``` 210 | sudo apt install rsync 211 | ``` 212 | 213 | To copy a folder with content from the remote to the server use: 214 | ``` 215 | rsync -a ~/folder/remote/ server_user@server_ip:/var/www/hub/ 216 | ``` 217 | 218 | To sync the other way, just reverse the folders 219 | ``` 220 | rsync -a server_user@server_ip:/var/www/hub/ ~/folder/remote/ 221 | ``` 222 | 223 | (If you add the "--delete" option after "-a" any files not in the source folder will be deleted from the destination.) 224 | 225 | -------------------------------------------------------------------------------- /source/album.css: -------------------------------------------------------------------------------- 1 | .jumbotron { 2 | padding-top: 3rem; 3 | padding-bottom: 3rem; 4 | margin-bottom: 0; 5 | background-color: #fff; 6 | } 7 | @media (min-width: 768px) { 8 | .jumbotron { 9 | padding-top: 6rem; 10 | padding-bottom: 6rem; 11 | } 12 | } 13 | 14 | .jumbotron p:last-child { 15 | margin-bottom: 0; 16 | } 17 | 18 | .jumbotron h1 { 19 | font-weight: 300; 20 | } 21 | 22 | .jumbotron .container { 23 | max-width: 40rem; 24 | } 25 | 26 | footer { 27 | padding-top: 3rem; 28 | padding-bottom: 3rem; 29 | } 30 | 31 | footer p { 32 | margin-bottom: .25rem; 33 | } 34 | -------------------------------------------------------------------------------- /source/carousel.css: -------------------------------------------------------------------------------- 1 | /* GLOBAL STYLES 2 | -------------------------------------------------- */ 3 | /* Padding below the footer and lighter body text */ 4 | 5 | body { 6 | padding-top: 3rem; 7 | padding-bottom: 3rem; 8 | color: #5a5a5a; 9 | } 10 | 11 | 12 | /* CUSTOMIZE THE CAROUSEL 13 | -------------------------------------------------- */ 14 | 15 | /* Carousel base class */ 16 | .carousel { 17 | margin-bottom: 4rem; 18 | } 19 | /* Since positioning the image, we need to help out the caption */ 20 | .carousel-caption { 21 | bottom: 3rem; 22 | z-index: 10; 23 | } 24 | 25 | /* Declare heights because of positioning of img element */ 26 | .carousel-item { 27 | height: 32rem; 28 | } 29 | .carousel-item > img { 30 | position: absolute; 31 | top: 0; 32 | left: 0; 33 | min-width: 100%; 34 | height: 32rem; 35 | } 36 | 37 | 38 | /* MARKETING CONTENT 39 | -------------------------------------------------- */ 40 | 41 | /* Center align the text within the three columns below the carousel */ 42 | .marketing .col-lg-4 { 43 | margin-bottom: 1.5rem; 44 | text-align: center; 45 | } 46 | .marketing h2 { 47 | font-weight: 400; 48 | } 49 | .marketing .col-lg-4 p { 50 | margin-right: .75rem; 51 | margin-left: .75rem; 52 | } 53 | 54 | 55 | /* Featurettes 56 | ------------------------- */ 57 | 58 | .featurette-divider { 59 | margin: 5rem 0; /* Space out the Bootstrap
more */ 60 | } 61 | 62 | /* Thin out the marketing headings */ 63 | .featurette-heading { 64 | font-weight: 300; 65 | line-height: 1; 66 | letter-spacing: -.05rem; 67 | } 68 | 69 | 70 | /* RESPONSIVE CSS 71 | -------------------------------------------------- */ 72 | 73 | @media (min-width: 40em) { 74 | /* Bump up size of carousel content */ 75 | .carousel-caption p { 76 | margin-bottom: 1.25rem; 77 | font-size: 1.25rem; 78 | line-height: 1.4; 79 | } 80 | 81 | .featurette-heading { 82 | font-size: 50px; 83 | } 84 | } 85 | 86 | @media (min-width: 62em) { 87 | .featurette-heading { 88 | margin-top: 7rem; 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /source/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/favicon.ico -------------------------------------------------------------------------------- /source/footer.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /source/header.php: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | QGIS Hub 11 | 12 | 13 | 14 | 15 | 16 | 41 | 42 | 43 | 44 | 45 | 46 |
47 | 99 |
-------------------------------------------------------------------------------- /source/include/carousel_bg_future.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/include/carousel_bg_future.jpg -------------------------------------------------------------------------------- /source/include/carousel_bg_layots.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/include/carousel_bg_layots.jpg -------------------------------------------------------------------------------- /source/include/carousel_bg_layouts.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/include/carousel_bg_layouts.jpg -------------------------------------------------------------------------------- /source/include/carousel_bg_styles.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/include/carousel_bg_styles.jpg -------------------------------------------------------------------------------- /source/include/carousel_bg_styles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/include/carousel_bg_styles.png -------------------------------------------------------------------------------- /source/include/db_connect.inc.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /source/include/db_connect.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /source/include/layout_edit.inc.php: -------------------------------------------------------------------------------- 1 | 5 |
6 | 7 |
8 |
9 |

Recover function not yet implemented.

10 |

It will require an email account on the server.

11 |

Help implement this on GitHub

12 |
13 | 14 |
15 | 16 | -------------------------------------------------------------------------------- /source/include/signup.inc.php: -------------------------------------------------------------------------------- 1 | 0){ 54 | header("Location: ../signup.php?error=user&user=".$userName."&email=".$email."&terms=".$terms); 55 | exit(); 56 | } else { 57 | $sql = "INSERT INTO users (username, useremail, userpwd) VALUES (?, ?, ?);"; 58 | $stmt = mysqli_stmt_init($conn); 59 | if(!mysqli_stmt_prepare($stmt, $sql)) { 60 | header("Location: ../signup.php?error=sql-error"); 61 | exit(); 62 | } else { 63 | $pwdhash = password_hash($pwd1, PASSWORD_BCRYPT); 64 | mysqli_stmt_bind_param($stmt, "sss", $userName, $email, $pwdhash); 65 | mysqli_stmt_execute($stmt); 66 | } 67 | } 68 | } 69 | } 70 | 71 | mysqli_stmt_close($stmt); 72 | mysqli_close($conn); 73 | 74 | session_start(); 75 | $_SESSION['username'] = $userName; 76 | $_SESSION['usermail'] = $email; 77 | header("Location: ../index.php?signup=successful"); -------------------------------------------------------------------------------- /source/include/style_edit.inc.php: -------------------------------------------------------------------------------- 1 | 6 | 7 |
8 | 9 | 58 | 59 | 60 | 61 |
62 | 63 | 64 |
65 |
66 | Placeholder 67 |

Style Hub

68 |

Styles are xml-files that is easy to share between QGIS users. 69 | You import and export the style-xml from the QGIS Style Manager.

70 |

Explore »

71 |
72 |
73 | 74 |

Layout Hub

75 |

Layout Templates are resources that can be shared between QGIS users as files. 76 | The files are exported from the layout window and you can open them from the QGIS browser.

77 |

Explore »

78 |
79 |
80 | 81 |

Future Hub

82 |

In the hub, there's plenty of room for expansion to new resource areas. 83 | Commitment by the community will decide how successfull the hub will be, and what it will contain.

84 | 85 |
86 |
87 | 88 | 89 | 90 | 91 |
92 | 93 |
94 |
95 |
96 |

Style-Hub

97 |

Styles in QGIS are great! If you want to share your styles with others, then the Style-Hub is one 98 | simple way to do this. You can browse and search the hub, or login/sign up and submit your own styles.

99 |

The best styles to submit are either "single" styles, or styles that belong togeather. A huge group 100 | of styles will be really hard to overview for other users. All styles submitted must be releasable under 101 | the Creative Commons 0 (CC-0) license. Which essentially mean it will be Public Domain.

102 |

Your style should be "self contained", and any SVG-markers should be "embedded" in the style. 103 | If you use font markers, try to remember to name the used font in the style description when 104 | you upload it. Export your styles from the QGIS Style Manager as xml-files, and capture a nice image (max 500kb) 105 | in jpg or png format that shows of your style in a nice way. Then submit it to the hub.

106 |

Find out more about QGIS styles in the 107 | official documentation.

108 |
109 | 110 |
111 |

Layout-Hub

112 |

Layouts in QGIS are really powerfull! When you have created a layout you want to share, save it 113 | as a layout template from the QGIS layout application.

114 |

The layout templets are files with a "qpt" extension, that can be opened from the QGIS Browser.

115 |

You can also save the layouts to your own layout templates folder in your QGIS profile.

116 |

Layouts can be infinetly more complex than styles, so you need to look out for dependencies 117 | for your layout that is required for it to work properly. Try and use SVG for graphics and "embed" 118 | them in the layout. Use simple fonts in texts, and you should avoid using custom functions in your 119 | expressions.

120 |

You could also use online fonts with css to make sure your style transfers ok. Se the "Postcard" 121 | layout for an example.

122 |

Find out more about QGIS layouts in the 123 | official documentation.

124 |
125 | 126 |
127 |

Future of the site

128 |

This site is a work in progress! At any time things may change, and the hosting is not fixed. 129 | If the community finds the hub usefull, it is the developers ambition (wish), that it may be included 130 | in the official QGIS site at qgis.org and that continued maintenance 131 | and developement can be done by a larger group of volunteers.

132 |

All code and documentation is located on GitHub where a "project" has been started, and for now it's easy 133 | to add additional developers that are interested in working with the site.

134 |

If you are interested you can find me on Twitter @klaskarlsson 135 | and the GitHub repository is located at GitHub.com/style-hub/hub-server 136 |

137 |

Not quite ready to accept feature requests yet, but if you find a problem you can open an 138 | issue on GitHub.

139 |
140 |
141 |
142 |
143 | 144 | -------------------------------------------------------------------------------- /source/layout_edit.php: -------------------------------------------------------------------------------- 1 | 32 | 33 |
34 |
35 |

Edit your layout

36 |

37 | Here you can edit metadata about your layout. You can also completely remove it from the hub if you want to. 38 |

39 | '); 42 | if($_GET['error']=="incomplete"){ 43 | echo("The form was missing some information. Sorry, but you will need to try again."); 44 | } else if($_GET['error']=="sql-error"){ 45 | echo("Database errors. There was an error trying to insert your information into the database."); 46 | } 47 | echo('

'); 48 | } 49 | ?> 50 |
51 | 52 |
53 |
54 | 55 | > 56 | Saved as Template from QGIS layout. 57 |
58 |
59 | 60 | > 61 | Layout preview image. 62 |
63 |
64 | 65 |
66 |
67 | 68 | > 69 | Identifyable and representable of your layout. (max 50 chars) 70 |
71 |
72 | 73 | > 74 | This is the person who created the layout. (max 50 chars) 75 |
76 |
77 | 78 |
79 | 80 | 81 | Short description of the layout that may help users in searching for the "right one". No HTML allowed. (max 255 chars) 82 |
83 |
84 | 85 |
86 |
87 | > 88 | 89 |
90 |
91 | > 92 | 93 |
94 |
95 | > 96 | 97 |
98 |
99 | > 100 | 101 |
102 |
103 | > 104 | 105 |
106 |
107 | > 108 | 109 |
110 |
111 | It will be easier for users 112 | if the layout files do not use elaborate font styles, and only single pages. 113 |
114 | 115 |
116 | 117 | > 118 | "More" featured layouts have a higher number (1-9). 119 |
120 | 121 | 122 | 123 | 124 |
125 |
126 | 127 | 128 |
129 | -------------------------------------------------------------------------------- /source/layout_submit.php: -------------------------------------------------------------------------------- 1 | 9 | 10 |
11 |
12 |

Submit a layout

13 |

14 | Before you continue, you should have two files ready. The layout qpt-file and a preview image (about 800x800 pixels) in 15 | jpg or png format, that shows the layout in a representative way. 16 |

17 | '); 20 | if($_GET['error']=="incomplete"){ 21 | echo("The form was missing some information. Sorry, but you will need to try again."); 22 | } else if($_GET['error']=="license"){ 23 | echo("You must agree to releasing your layout as Creative Commons 0 (public domain) to upload to the layout-hub."); 24 | } else if($_GET['error']=="file"){ 25 | echo("File errors. Make sure you have selected both files, and that they are the correct type and not to large."); 26 | } else if($_GET['error']=="sql-error"){ 27 | echo("Database errors. There was an error trying to insert your information into the database."); 28 | } 29 | echo('

'); 30 | } 31 | ?> 32 |
33 | 34 |
35 |
36 | 37 | 38 | Saved as Template from QGIS layout (max 500kb). 39 |
40 |
41 | 42 | 43 | Layout preview image (max 500kb). 44 |
45 |
46 | 47 |
48 |
49 | 50 | 51 | Identifyable and representable of your layout. (max 50 chars) 52 |
53 |
54 | 55 | 56 | This is the person who created the layout. (max 50 chars) 57 |
58 |
59 | 60 |
61 | 62 | 63 | Short description of the layout that may help users in searching for the "right one", include reference to any required resources. No HTML allowed. (max 255 chars) 64 |
65 |
66 | 67 |
68 |
69 | 70 | 71 |
72 |
73 | 74 | 75 |
76 |
77 | 78 | 79 |
80 |
81 | 82 | 83 |
84 |
85 | 86 | 87 |
88 |
89 | 90 | 91 |
92 |
93 | It will be easier for users 94 | if the layout files do not use elaborate fonts, and only single pages. 95 |
96 |
97 |
98 | 99 | 100 |
101 |
102 | 103 |
104 |
105 | 106 | 107 |
108 | -------------------------------------------------------------------------------- /source/layouts.php: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 |
10 | 11 |
12 |
13 |

Layout Hub

14 |

Collections of free to use QGIS layout qpt-files to download and import. 15 | You can open the layouts from the QGIS Browser, or save them in the profile templates folder. 16 |

17 |

(Settings-User Profiles-Open Active Profile Folder)

18 | 22 | Login or Sign Up to submit layouts. 23 | 27 | Submit Layout 28 |
We humbly ask you to TEST your layout-qpt before you upload. 29 | 32 | 33 |
34 |
35 | 36 | 37 | 38 |
39 |
40 |
41 |
42 | 43 |
44 |
45 | 60 |
61 |
62 | 68 |
69 |
70 | 71 |
72 |
73 |
74 |
75 | 76 |
77 |
78 | 82 | 83 |
84 | 0 ORDER BY id DESC ".$pages.";"; 96 | } else { // if the search button has been pressed then... 97 | $searchstring = $_POST['searchtext']; 98 | $pages = ";"; // no pages when searching 99 | 100 | // If no sort order is set 101 | if(!$_POST['sort']){ 102 | $sort = " ORDER BY id DESC;"; 103 | } else { // if a sort order IS set 104 | if($_POST['sort']=='layoutname'){ 105 | $sort = " ORDER BY layoutname;"; 106 | } else if ($_POST['sort']=='id'){ 107 | $sort = " ORDER BY id;"; 108 | } else if ($_POST['sort']=='featured'){ 109 | $sort = " ORDER BY popular DESC, id DESC;"; 110 | } 111 | } 112 | // If no filter is selected 113 | if(!$_POST['filter']){ 114 | $filter = ""; 115 | $filtered = false; 116 | } else { // if a filter IS selected 117 | if($_POST['filter']=='username'){ 118 | $filter = ' AND byuser="'.$_SESSION['username'].'"'; 119 | } else { 120 | $filter = ' AND '.$_POST['filter'].'=1'; 121 | } 122 | $filtered = true; 123 | } 124 | 125 | // Create the SQL string for the list of layouts to show 126 | if(!$searchstring){ 127 | $sql = "SELECT * FROM layouts WHERE id>0".$filter.$sort; 128 | } else { 129 | $filtered = true; 130 | $sql = "SELECT * FROM layouts WHERE (layoutdescription LIKE '%".$searchstring."%' OR layoutname LIKE '%".$searchstring."%') ".$filter.$sort; 131 | } 132 | } // end of search handeling sql 133 | 134 | // Get the raw database result 135 | $result = mysqli_query($conn, $sql); 136 | // count the number of rows 137 | $resultCheck = mysqli_num_rows($result); 138 | if ($resultCheck > 0) { 139 | // Set item counter 140 | $itemscounter=0; 141 | while($row = mysqli_fetch_assoc($result)) { 142 | // count the record as one item 143 | ++$itemscounter; 144 | // Section below is repeated for every record in the database table 145 | $layoutId = $row['id']; 146 | $layoutName = $row['layoutname']; 147 | $layoutDescription = $row['layoutdescription']; 148 | $imageUrl = $row['layoutpreview']; 149 | $layoutUrl = $row['layoutqpt']; 150 | $layoutCreator = $row['layoutcreator']; 151 | $layoutUsername = $row['byuser']; 152 | $featured = $row['popular']; 153 | ?> 154 | 155 | 156 |
157 |
158 |
159 |
160 | 0){ 162 | echo(' ★'); 163 | } 164 | if($_SESSION['username'] == $layoutUsername OR $_SESSION['moderator']){ 165 | ?> 166 | 167 | EDIT 168 | 169 | 172 |
173 |
174 |
175 | 176 |

177 |
178 |
179 | Download 180 |
181 | 182 | '.$layoutCreator.''); 185 | } else { 186 | echo $layoutCreator; 187 | } 188 | ?> 189 |
190 |
191 |
192 |
193 | 194 | 195 | 199 |
200 | 201 | 205 |
206 |
207 | 208 | =$iteminterval){ 210 | echo(' 211 | 212 | 213 | '); 214 | } 215 | echo(' Page '.round(($startitem)/$iteminterval+1).' '); 216 | if($itemscounter==$iteminterval){ 217 | echo(' 218 | 219 | 220 | '); 221 | } 222 | ?> 223 |
224 |
225 | 231 |
232 |
233 | This is a filtered list. [reset] 234 |
235 |
236 | 239 |
240 |
241 |
242 | 243 | 244 | 262 | 271 | 272 | 273 | 274 |
275 |
276 | Layouts can be opened from the QGIS Browser. 277 |
278 |
279 | 280 | -------------------------------------------------------------------------------- /source/layouts/images/5f2ea4ecd2bda6.55720649.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/layouts/images/5f2ea4ecd2bda6.55720649.jpg -------------------------------------------------------------------------------- /source/layouts/images/5f2ea54ce44388.34804648.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/layouts/images/5f2ea54ce44388.34804648.jpg -------------------------------------------------------------------------------- /source/layouts/images/5f2ea5f98a5464.63480178.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/layouts/images/5f2ea5f98a5464.63480178.jpg -------------------------------------------------------------------------------- /source/layouts/images/5f2ea70884d192.51494044.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/layouts/images/5f2ea70884d192.51494044.jpg -------------------------------------------------------------------------------- /source/layouts/images/5f2eae93174540.49168187.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/layouts/images/5f2eae93174540.49168187.jpg -------------------------------------------------------------------------------- /source/layouts/images/5f2eafcd518d27.51669229.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/layouts/images/5f2eafcd518d27.51669229.png -------------------------------------------------------------------------------- /source/layouts/images/5f2eb619e1ee50.29674482.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/layouts/images/5f2eb619e1ee50.29674482.png -------------------------------------------------------------------------------- /source/layouts/images/5f2f99abe5c4e0.37617526.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/layouts/images/5f2f99abe5c4e0.37617526.jpg -------------------------------------------------------------------------------- /source/layouts/images/5f2f9a8be01522.74046234.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/layouts/images/5f2f9a8be01522.74046234.jpg -------------------------------------------------------------------------------- /source/layouts/images/5f2f9ea669c4f4.16900436.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/layouts/images/5f2f9ea669c4f4.16900436.jpg -------------------------------------------------------------------------------- /source/layouts/resources/5f2eb619e1eda7.23049489.qpt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | -------------------------------------------------------------------------------- /source/signup.php: -------------------------------------------------------------------------------- 1 | 5 | 6 |
7 |
8 | 11 |
12 |
13 |
14 |

Your login attempt failed.

15 | 16 |
17 | 18 |
19 |
20 |
21 |
22 | 25 |

Signup to the QGIS Hub

26 |

27 | To be able to submit and edit your submissions you need to have an account. 28 | In order to be able to help you reset your password, an e-mail is also required. 29 | Your username must be uniqe and it will be assosiated with the styles you submit. 30 |

31 |
32 |
"> 33 |
34 | 35 | " id="userName" name="userName" placeholder="Username" value=""> 36 | Uniqe username will be used for your interactions. 37 |
38 |
39 | 40 | " id="email" name="email" placeholder="Valid E-mail" value=""> 41 | E-main is required to reset password, and can be used to login. 42 |
43 |
44 |
45 |
46 | 47 | " id="pwd1" aria-describedby="pwdHelp" name="pwd1" placeholder="Password"> 48 | Select a secure password. 49 |
50 |
51 | 52 | " id="pwd2" aria-describedby="pwd2Help" name="pwd2" placeholder="Repeat Password"> 53 | Repeat your secure password. 54 |
55 |
56 |
57 |
58 | " id="submitCC0" name="terms" value="1" > 59 | 66 |
67 |
68 | 69 |
70 |
71 | 72 | 73 |
74 | -------------------------------------------------------------------------------- /source/style_edit.php: -------------------------------------------------------------------------------- 1 | 34 | 35 |
36 |
37 |

Edit your style

38 |

39 | Here you can edit metadata about your style. You can also completely remove it from the hub if you want to. 40 |

41 | '); 44 | if($_GET['error']=="incomplete"){ 45 | echo("The form was missing some information. Sorry, but you will need to try again."); 46 | } else if($_GET['error']=="sql-error"){ 47 | echo("Database errors. There was an error trying to insert your information into the database."); 48 | } 49 | echo('

'); 50 | } 51 | ?> 52 |
53 | 54 |
55 |
56 | 57 | > 58 | Exported from QGIS style manager. 59 |
60 |
61 | 62 | > 63 | Style preview image. 64 |
65 |
66 | 67 |
68 |
69 | 70 | > 71 | Identifyable and representable of your style. (max 50 chars) 72 |
73 |
74 | 75 | > 76 | This is the person who created the style. (max 50 chars) 77 |
78 |
79 | 80 |
81 | 82 | 83 | Short description of the style that may help users in searching for the "right one". No HTML allowed. (max 255 chars) 84 |
85 |
86 | 87 |
88 |
89 | > 90 | 91 |
92 |
93 | > 94 | 95 |
96 |
97 | > 98 | 99 |
100 |
101 | > 102 | 103 |
104 |
105 | > 106 | 107 |
108 |
109 | > 110 | 111 |
112 |
113 | > 114 | 115 |
116 |
117 | It will be easier for users if the style files contain only related styles. 118 |
119 | 120 |
121 | 122 | > 123 | Featured styles have a higher number (0-9). 124 |
125 | 126 | 127 | 128 | 129 |
130 |
131 | 132 | 133 |
134 | -------------------------------------------------------------------------------- /source/style_submit.php: -------------------------------------------------------------------------------- 1 | 9 | 10 |
11 |
12 |

Submit a style

13 |

14 | Before you continue, you should have two files ready. The style xml-file and a preview image (about 800x600 pixels) in 15 | jpg or png format, that shows the style(-s) in a representative way. 16 |

17 | '); 20 | if($_GET['error']=="incomplete"){ 21 | echo("The form was missing some information. Sorry, but you will need to try again."); 22 | } else if($_GET['error']=="license"){ 23 | echo("You must agree to releasing your style as Creative Commons 0 (public domain) to upload to the style-hub."); 24 | } else if($_GET['error']=="file"){ 25 | echo("File errors. Make sure you have selected both files, and that they are the correct type and not to large."); 26 | } else if($_GET['error']=="sql-error"){ 27 | echo("Database errors. There was an error trying to insert your information into the database."); 28 | } 29 | echo('

'); 30 | } 31 | ?> 32 |
33 | 34 |
35 |
36 | 37 | 38 | Exported from QGIS style manager (max 500kb). 39 |
40 |
41 | 42 | 43 | Style preview image (max 500kb). 44 |
45 |
46 | 47 |
48 |
49 | 50 | 51 | Identifyable and representable of your style. (max 50 chars) 52 |
53 |
54 | 55 | 56 | This is the person who created the style. (max 50 chars) 57 |
58 |
59 | 60 |
61 | 62 | 63 | Short description of the style that may help users in searching for the "right one". No HTML allowed. (max 255 chars) 64 |
65 |
66 | 67 |
68 |
69 | 70 | 71 |
72 |
73 | 74 | 75 |
76 |
77 | 78 | 79 |
80 |
81 | 82 | 83 |
84 |
85 | 86 | 87 |
88 |
89 | 90 | 91 |
92 |
93 | 94 | 95 |
96 |
97 | It will be easier for users if the style files contain only one styel, or connected styles in a theme. 98 |
99 |
100 |
101 | 102 | 103 |
104 |
105 | 106 |
107 |
108 | 109 | 110 |
111 | -------------------------------------------------------------------------------- /source/styles.php: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 |
10 | 11 |
12 |
13 |

Style Hub

14 |

Collections of free to use QGIS style xml-files to download and import. 15 | To use the url, click the copy button1, then paste the url in QGIS style manager import dialogue. 16 |

17 | 21 | Login or Sign Up to submit styles. 22 | 26 | Submit Style 27 |
We humbly ask you to TEST your style-xml before you upload. 28 | 31 | 32 |
33 |
34 | 35 | 36 | 37 |
38 |
39 |
40 |
41 | 42 |
43 |
44 | 60 |
61 |
62 | 68 |
69 |
70 | 71 |
72 |
73 |
74 |
75 | 76 |
77 |
78 | 82 | 83 |
84 | 0 ORDER BY id DESC ".$pages.";"; 96 | } else { // if the search button has been pressed then... 97 | $searchstring = $_POST['searchtext']; 98 | $pages = ";"; // no pages when searching 99 | 100 | // If no sort order is set 101 | if(!$_POST['sort']){ 102 | $sort = " ORDER BY id DESC;"; 103 | } else { // if a sort order IS set 104 | if($_POST['sort']=='stylename'){ 105 | $sort = " ORDER BY stylename;"; 106 | } else if ($_POST['sort']=='id'){ 107 | $sort = " ORDER BY id;"; 108 | } else if ($_POST['sort']=='featured'){ 109 | $sort = " ORDER BY popular DESC, id DESC;"; 110 | } 111 | } 112 | // If no filter is selected 113 | if(!$_POST['filter']){ 114 | $filter = ""; 115 | $filtered = false; 116 | } else { // if a filter IS selected 117 | if($_POST['filter']=='username'){ 118 | $filter = ' AND byuser="'.$_SESSION['username'].'"'; 119 | } else { 120 | $filter = ' AND '.$_POST['filter'].'=1'; 121 | } 122 | $filtered = true; 123 | } 124 | 125 | // Create the SQL string for the list of styles to show 126 | if(!$searchstring){ 127 | $sql = "SELECT * FROM styles WHERE id>0".$filter.$sort; 128 | } else { 129 | $filtered = true; 130 | $sql = "SELECT * FROM styles WHERE (styledescription LIKE '%".$searchstring."%' OR stylename LIKE '%".$searchstring."%') ".$filter.$sort; 131 | } 132 | } // end of search handeling sql 133 | 134 | // Get the raw database result 135 | $result = mysqli_query($conn, $sql); 136 | // count the number of rows 137 | $resultCheck = mysqli_num_rows($result); 138 | if ($resultCheck > 0) { 139 | // Set item counter 140 | $itemscounter=0; 141 | while($row = mysqli_fetch_assoc($result)) { 142 | // count the record as one item 143 | ++$itemscounter; 144 | // Section below is repeated for every record in the database table 145 | $styleId = $row['id']; 146 | $styleName = $row['stylename']; 147 | $styleDescription = $row['styledescription']; 148 | $imageUrl = $row['stylepreview']; 149 | $styleUrl = $row['stylexml']; 150 | $styleCreator = $row['stylecreator']; 151 | $styleUsername = $row['byuser']; 152 | $featured = $row['popular']; 153 | ?> 154 | 155 | 156 |
157 |
158 |
159 |
160 | 0){ 162 | echo(' ★'); 163 | } 164 | if($_SESSION['username'] == $styleUsername OR $_SESSION['moderator']){ 165 | ?> 166 | 167 | EDIT 168 | 169 | 172 |
173 |
174 |
175 | 176 |

177 |
178 |
179 | XML 180 | 181 |
182 | 183 | '.$styleCreator.''); 186 | } else { 187 | echo $styleCreator; 188 | } 189 | ?> 190 |
191 |
192 |
193 |
194 | 195 | 196 | 200 |
201 | 202 | 206 |
207 |
208 | 209 | =$iteminterval){ 211 | echo(' 212 | 213 | 214 | '); 215 | } 216 | echo(' Page '.ceil(($startitem)/$iteminterval+1).' '); 217 | if($itemscounter==$iteminterval){ 218 | echo(' 219 | 220 | 221 | '); 222 | } 223 | ?> 224 |
225 |
226 | 232 |
233 |
234 | This is a filtered list. [reset] 235 |
236 |
237 | 240 |
241 |
242 |
243 | 244 | 245 | 263 | 272 | 273 | 274 | 275 |
276 |
277 | 1 Copy button only works with https hosting. 278 |
279 |
280 | 281 | -------------------------------------------------------------------------------- /source/styles/images/5f2ac8e21402a4.97545666.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/5f2ac8e21402a4.97545666.jpg -------------------------------------------------------------------------------- /source/styles/images/5f2b028244e595.02806186.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/5f2b028244e595.02806186.png -------------------------------------------------------------------------------- /source/styles/images/5f2b33ee30fa63.26828068.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/5f2b33ee30fa63.26828068.jpeg -------------------------------------------------------------------------------- /source/styles/images/5f2c31183d61c6.77483439.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/5f2c31183d61c6.77483439.png -------------------------------------------------------------------------------- /source/styles/images/5f2dd3fe213194.63332282.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/5f2dd3fe213194.63332282.jpg -------------------------------------------------------------------------------- /source/styles/images/5f2ec31ea09265.72627163.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/5f2ec31ea09265.72627163.png -------------------------------------------------------------------------------- /source/styles/images/Revision.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/Revision.png -------------------------------------------------------------------------------- /source/styles/images/Screenshot from 2020-07-15 10-58-42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/Screenshot from 2020-07-15 10-58-42.png -------------------------------------------------------------------------------- /source/styles/images/Screenshot from 2020-07-15 15-09-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/Screenshot from 2020-07-15 15-09-48.png -------------------------------------------------------------------------------- /source/styles/images/Screenshot from 2020-07-15 18-22-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/Screenshot from 2020-07-15 18-22-05.png -------------------------------------------------------------------------------- /source/styles/images/Screenshot from 2020-07-16 10-12-36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/Screenshot from 2020-07-16 10-12-36.png -------------------------------------------------------------------------------- /source/styles/images/Screenshot from 2020-07-18 11-11-17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/Screenshot from 2020-07-18 11-11-17.png -------------------------------------------------------------------------------- /source/styles/images/Screenshot from 2020-07-20 14-09-41.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/Screenshot from 2020-07-20 14-09-41.png -------------------------------------------------------------------------------- /source/styles/images/Screenshot from 2020-07-21 15-34-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/Screenshot from 2020-07-21 15-34-02.png -------------------------------------------------------------------------------- /source/styles/images/Screenshot from 2020-08-01 20-33-49.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/Screenshot from 2020-08-01 20-33-49.png -------------------------------------------------------------------------------- /source/styles/images/Screenshot from 2020-08-03 18-46-42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/Screenshot from 2020-08-03 18-46-42.png -------------------------------------------------------------------------------- /source/styles/images/cool_lakes_pattern.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/cool_lakes_pattern.jpg -------------------------------------------------------------------------------- /source/styles/images/denim.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/denim.jpg -------------------------------------------------------------------------------- /source/styles/images/organic_blocks.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/organic_blocks.jpg -------------------------------------------------------------------------------- /source/styles/images/pen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/pen.png -------------------------------------------------------------------------------- /source/styles/images/pencil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/pencil.png -------------------------------------------------------------------------------- /source/styles/images/readme.md: -------------------------------------------------------------------------------- 1 | # Images 2 | 3 | This folder should hold all preview images that is used for the styles on the hub. 4 | 5 | The contributor generates these images as a representative image of the submitted styles. 6 | 7 | The size should not be larger than 800x600 px and in png or jpg format. 8 | 9 | The images are uploaded to the folder with the submit.php page. 10 | -------------------------------------------------------------------------------- /source/styles/images/sharpie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/sharpie.png -------------------------------------------------------------------------------- /source/styles/images/wallpaper-70s.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/style-hub/hub-server/165ac5aafc687925cce88c298cef5df8ba314385/source/styles/images/wallpaper-70s.jpg -------------------------------------------------------------------------------- /source/styles/index.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 87 | 92 | 97 | 102 | 103 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /source/styles/resources/5f2b028244e4f1.91634423.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | -------------------------------------------------------------------------------- /source/styles/resources/5f2b33ee30f9d4.93708272.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /source/styles/resources/5f2dd3fe2130e3.56895725.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /source/styles/resources/70s_wallpaper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 87 | 92 | 97 | 98 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /source/styles/resources/CAD Revision cloud.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 120 | 121 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | -------------------------------------------------------------------------------- /source/styles/resources/Pencil.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 57 | 62 | 63 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /source/styles/resources/Sharpie.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 57 | 62 | 63 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /source/styles/resources/ballpoint_pen.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 57 | 58 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /source/styles/resources/cross_stitch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /source/styles/resources/panel.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /source/styles/resources/readme.md: -------------------------------------------------------------------------------- 1 | # Resources 2 | 3 | This folder holds the style xml-files uploaded by the contributor with the submit.php page. 4 | 5 | -------------------------------------------------------------------------------- /source/styles/resources/rock_crystal.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 87 | 92 | 97 | 102 | 103 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | -------------------------------------------------------------------------------- /source/styles/resources/zipper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /source/users.php: -------------------------------------------------------------------------------- 1 | 9 | 10 |
11 |
12 |

Users

13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 0) { 30 | while($row = mysqli_fetch_assoc($result)) { 31 | $id = $row['id']; 32 | $username = $row['username']; 33 | $useremail = $row['useremail']; 34 | if($row['moderator']){ 35 | $usermoderator = 'Yes'; 36 | } else { 37 | $usermoderator = ' '; 38 | } 39 | echo(''); 40 | echo(''); 41 | echo(''); 42 | echo(''); 43 | echo(''); 44 | echo(''); 45 | echo(''); 46 | } 47 | } 48 | 49 | ?> 50 | 51 |
#UserNameUserEmailModeratorEdit
'.$id.''.$username.''.$useremail.''.$usermoderator.'edit
52 |
53 |
54 | 55 | --------------------------------------------------------------------------------