Buttons
80 | 81 |This theme has no button sets
85 | 86 |├── .gitignore ├── LICENSE ├── README.md ├── _build ├── config.json ├── gpm_resolvers │ └── gpm.resolve.resources.php ├── resolvers │ ├── config.php │ ├── sample_content.php │ └── sample_settings.php └── setup.options.php ├── _packages └── flatso-1.1.1-pl.transport.zip ├── assets └── components │ └── flatso │ ├── css │ ├── flatso.css │ ├── mobile-nav.css │ └── reset.css │ ├── images │ ├── beach-house.jpg │ ├── downtown.jpg │ ├── facebook-white-35.png │ ├── forest.jpg │ ├── golden-city.jpg │ ├── golden-gate-bridge.jpg │ ├── home-page-image.jpg │ ├── modx-revo-2_3-icon.png │ ├── revine-yoga.jpg │ ├── rss-white-35.png │ ├── surf-city.jpg │ ├── twitter-white-35.png │ └── wayne-avatar.jpg │ ├── js │ └── mobile-nav.js │ └── styleguide │ ├── buttons.html │ ├── components.html │ ├── css │ ├── base.css │ └── modx-chunk.css │ ├── forms.html │ ├── fposts.html │ ├── giant-ads.html │ ├── index.html │ ├── listings.html │ ├── lists.html │ ├── nav-tab.html │ ├── navigation.html │ ├── tables.html │ └── text-blocks.html ├── core └── components │ └── flatso │ ├── docs │ ├── changelog.md │ ├── index.md │ └── license.md │ ├── elements │ ├── chunks │ │ ├── features │ │ │ ├── tpl.feature_featured_posts_sidebar_flatso.chunk.tpl │ │ │ └── tpl.feature_listing_flatso.chunk.tpl │ │ ├── flatsocss.chunk.tpl │ │ ├── listing │ │ │ ├── mxt.listing_aside_flatso.chunk.tpl │ │ │ ├── mxt.listing_content_flatso.chunk.tpl │ │ │ ├── mxt.listing_end_flatso.chunk.tpl │ │ │ ├── mxt.listing_header_flatso.chunk.tpl │ │ │ └── mxt.listing_start_flatso.chunk.tpl │ │ ├── mobile │ │ │ └── mobile-nav_flatso.chunk.tpl │ │ ├── mxt.global_assets_flatso.chunk.tpl │ │ ├── mxt.global_header_flatso.chunk.tpl │ │ ├── mxt.global_meta_flatso.chunk.tpl │ │ ├── nav_tab_support.chunk.tpl │ │ ├── page │ │ │ ├── mxt.page_content_flatso.chunk.tpl │ │ │ ├── mxt.page_end_flatso.chunk.tpl │ │ │ ├── mxt.page_header_flatso.chunk.tpl │ │ │ └── mxt.page_start_flatso.chunk.tpl │ │ ├── rss-item.chunk.tpl │ │ ├── styleguide.chunk.tpl │ │ └── tpls │ │ │ ├── tpl.arc_list_flatso.chunk.tpl │ │ │ ├── tpl.listing_tag_flatso.chunk.tpl │ │ │ ├── tpl.nav-item_flatso.chunk.tpl │ │ │ └── tpl.tag_list_flatso.chunk.tpl │ ├── snippets │ │ └── cateheading.snippet.php │ └── templates │ │ └── rss.template.tpl │ └── resources │ └── sample_resource.html └── screenshots ├── Flatso-Theme.jpeg ├── dependencies.jpeg ├── featured-posts.jpeg ├── flatso-config.jpeg ├── font-config.jpeg ├── mxt-config.jpeg └── theme-config.jpeg /.gitignore: -------------------------------------------------------------------------------- 1 | _build/build.config.php 2 | config.core.php 3 | 4 | _packages/*.* 5 | !_packages/.gitignore 6 | !_packages/*.zip 7 | 8 | .idea 9 | .settings 10 | nbproject 11 | .project 12 | 13 | .DS_Store 14 | .DS_Store? 15 | ._* 16 | .Spotlight-V100 17 | .Trashes 18 | ehthumbs.db 19 | Thumbs.db -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 MODX Content Management 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # flatso 2 | Home of Flatso: the simple personal blog theme for MODX, done without any "Parent Extras" like "Articles", but instead using MODX 2.4 dependencies to install Extras. 3 | 4 | YouTube Demo: [https://youtu.be/cARDoKmL9mg](https://youtu.be/cARDoKmL9mg) 5 | 6 | DEMO: [Live Site](http://flatso.clients.modxcloud.com/) 7 | Package: [Download v1.0.0-pl](flatso-1.0.0-pl.transport.zip) 8 | 9 | This package has 1 goal: 10 | 11 | **Get you up and running with a standard MODX Blog install with the least barrier to entry.** 12 | 13 | ##Framework 14 | 15 | Built on the [MODX Themes](https://github.com/modxcms/mxt/wiki) Framework 16 | 17 | The Wiki in this Repo should however contain all of the information you need about the **Theme Markup**. 18 | 19 | ##Requirements 20 | 21 | 1. MODX 2.4 - For the dependencies 22 |  23 | 24 | 2. MODX Theme Extra (Package) - For the base config 25 |  26 | 27 | 3. Flatso Extra (Package) - For everything else! 28 |  29 | 30 | 4. After install set Friendly URLs to `Yes` 31 | 32 | 5. Clear cache 33 | 34 | --- 35 | 36 |  37 | -------------------------------------------------------------------------------- /_build/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Flatso", 3 | "lowCaseName": "flatso", 4 | "description": "Home of Flatso: the simple blog and theme for MODX, done right.", 5 | "author": "Wayne Roddy", 6 | "version": "1.1.1", 7 | "package": { 8 | "elements": { 9 | "templates": [ 10 | { 11 | "name": "RSS" 12 | } 13 | ], 14 | "snippets": [ 15 | { 16 | "name": "cateHeading" 17 | } 18 | ], 19 | "chunks": [ 20 | { 21 | "name": "nav_tab_support" 22 | }, 23 | { 24 | "name": "rss-item" 25 | }, 26 | { 27 | "name": "styleguide" 28 | }, 29 | { 30 | "name": "FlatsoCss" 31 | }, 32 | { 33 | "name": "mxt.global_assets_flatso" 34 | }, 35 | { 36 | "name": "mxt.global_header_flatso" 37 | }, 38 | { 39 | "name": "mxt.global_meta_flatso" 40 | }, 41 | { 42 | "name": "tpl.feature_featured_posts_sidebar_flatso", 43 | "category": "Features" 44 | }, 45 | { 46 | "name": "tpl.feature_listing_flatso", 47 | "category": "Features" 48 | }, 49 | { 50 | "name": "mxt.listing_aside_flatso", 51 | "category": "Listing" 52 | }, 53 | { 54 | "name": "mxt.listing_content_flatso", 55 | "category": "Listing" 56 | }, 57 | { 58 | "name": "mxt.listing_end_flatso", 59 | "category": "Listing" 60 | }, 61 | { 62 | "name": "mxt.listing_header_flatso", 63 | "category": "Listing" 64 | }, 65 | { 66 | "name": "mxt.listing_start_flatso", 67 | "category": "Listing" 68 | }, 69 | { 70 | "name": "mobile-nav_flatso", 71 | "category": "Mobile" 72 | }, 73 | { 74 | "name": "mxt.page_content_flatso", 75 | "category": "Page" 76 | }, 77 | { 78 | "name": "mxt.page_end_flatso", 79 | "category": "Page" 80 | }, 81 | { 82 | "name": "mxt.page_header_flatso", 83 | "category": "Page" 84 | }, 85 | { 86 | "name": "mxt.page_start_flatso", 87 | "category": "Page" 88 | }, 89 | { 90 | "name": "tpl.arc_list_flatso", 91 | "category": "TPLs" 92 | }, 93 | { 94 | "name": "tpl.listing_tag_flatso", 95 | "category": "TPLs" 96 | }, 97 | { 98 | "name": "tpl.nav-item_flatso", 99 | "category": "TPLs" 100 | }, 101 | { 102 | "name": "tpl.tag_list_flatso", 103 | "category": "TPLs" 104 | } 105 | ], 106 | "categories": [ 107 | { 108 | "name": "Features" 109 | }, 110 | { 111 | "name": "Listing" 112 | }, 113 | { 114 | "name": "Mobile" 115 | }, 116 | { 117 | "name": "Page" 118 | }, 119 | { 120 | "name": "TPLs" 121 | } 122 | ] 123 | }, 124 | "resources": [ 125 | { 126 | "pagetitle": "Home", 127 | "alias": "index", 128 | "template": "MX Template", 129 | "isfolder": 1, 130 | "published": 1, 131 | "class_key": "CollectionContainer", 132 | "setAsHome": 1, 133 | "tvs": [ 134 | { 135 | "name": "content_tpl", 136 | "value": "listing" 137 | }, 138 | { 139 | "name": "body_tpl", 140 | "value": "page" 141 | }, 142 | { 143 | "name": "page_icon", 144 | "value": "fa-home" 145 | }, 146 | { 147 | "name": "page_img", 148 | "value": "assets/components/flatso/images/home-page-image.jpg" 149 | }, 150 | { 151 | "name": "fpost_ids", 152 | "value": "9,10" 153 | }, 154 | { 155 | "name": "hero_banner", 156 | "value": "yes" 157 | }, 158 | { 159 | "name": "carousel_ids", 160 | "value": "" 161 | }, 162 | { 163 | "name": "slider_ids", 164 | "value": "" 165 | }, 166 | { 167 | "name": "listing_ids", 168 | "value": "" 169 | }, 170 | { 171 | "name": "listbyparent", 172 | "value": "" 173 | } 174 | ] 175 | }, 176 | { 177 | "pagetitle": "Categories", 178 | "longtitle": "All Categories", 179 | "alias": "tags", 180 | "template": "MX Template", 181 | "published": 1, 182 | "isfolder": 1, 183 | "tvs": [ 184 | { 185 | "name": "content_tpl", 186 | "value": "listing" 187 | }, 188 | { 189 | "name": "body_tpl", 190 | "value": "page" 191 | }, 192 | { 193 | "name": "page_icon", 194 | "value": "" 195 | }, 196 | { 197 | "name": "page_img", 198 | "value": "" 199 | }, 200 | { 201 | "name": "fpost_ids", 202 | "value": "" 203 | }, 204 | { 205 | "name": "hero_banner", 206 | "value": "" 207 | }, 208 | { 209 | "name": "carousel_ids", 210 | "value": "" 211 | }, 212 | { 213 | "name": "slider_ids", 214 | "value": "" 215 | }, 216 | { 217 | "name": "listing_ids", 218 | "value": "" 219 | }, 220 | { 221 | "name": "listbyparent", 222 | "value": "" 223 | } 224 | ] 225 | }, 226 | { 227 | "pagetitle": "RSS", 228 | "alias": "rss", 229 | "introtext": "RSS FEED", 230 | "template": "RSS", 231 | "published": 1, 232 | "searchable": 0, 233 | "richtext": 0, 234 | "cacheable": 0, 235 | "hidemenu": 1, 236 | "content_type": "RSS" 237 | }, 238 | { 239 | "pagetitle": "Style Guide", 240 | "longtitle": "Style Guide", 241 | "alias": "style-guide", 242 | "template": "MX Template", 243 | "published": 1, 244 | "content": "[[$styleguide]]", 245 | "tvs": [ 246 | { 247 | "name": "content_tpl", 248 | "value": "page" 249 | }, 250 | { 251 | "name": "body_tpl", 252 | "value": "page" 253 | }, 254 | { 255 | "name": "page_icon", 256 | "value": "" 257 | }, 258 | { 259 | "name": "page_img", 260 | "value": "assets/components/flatso/images/revine-yoga.jpg" 261 | }, 262 | { 263 | "name": "fpost_ids", 264 | "value": "" 265 | }, 266 | { 267 | "name": "hero_banner", 268 | "value": "yes" 269 | }, 270 | { 271 | "name": "carousel_ids", 272 | "value": "" 273 | }, 274 | { 275 | "name": "slider_ids", 276 | "value": "" 277 | }, 278 | { 279 | "name": "listing_ids", 280 | "value": "" 281 | }, 282 | { 283 | "name": "listbyparent", 284 | "value": "" 285 | } 286 | ] 287 | }, 288 | { 289 | "pagetitle": "Archives", 290 | "longtitle": "[[+arc_month_name]] [[+arc_year]] Archives", 291 | "introtext": "A lot can happen in a month", 292 | "alias": "archives", 293 | "template": "MX Template", 294 | "published": 1, 295 | "isfolder": 1, 296 | "tvs": [ 297 | { 298 | "name": "content_tpl", 299 | "value": "listing" 300 | }, 301 | { 302 | "name": "body_tpl", 303 | "value": "page" 304 | }, 305 | { 306 | "name": "page_icon", 307 | "value": "" 308 | }, 309 | { 310 | "name": "page_img", 311 | "value": "" 312 | }, 313 | { 314 | "name": "fpost_ids", 315 | "value": "" 316 | }, 317 | { 318 | "name": "hero_banner", 319 | "value": "" 320 | }, 321 | { 322 | "name": "carousel_ids", 323 | "value": "" 324 | }, 325 | { 326 | "name": "slider_ids", 327 | "value": "" 328 | }, 329 | { 330 | "name": "listing_ids", 331 | "value": "" 332 | }, 333 | { 334 | "name": "listbyparent", 335 | "value": "" 336 | } 337 | ] 338 | }, 339 | { 340 | "pagetitle": "Golden Gate Bridge", 341 | "longtitle": "Golden Gate Bridge", 342 | "description": "Golden Gate Bridge spans the San Francisco Bay.", 343 | "introtext": "Golden Gate Bridge spans the San Francisco Bay.", 344 | "published": 1, 345 | "alias": "golden-gate-bridge", 346 | "template": "MX Template", 347 | "file": "sample_resource.html", 348 | "parent": "Home", 349 | "tvs": [ 350 | { 351 | "name": "content_tpl", 352 | "value": "page" 353 | }, 354 | { 355 | "name": "body_tpl", 356 | "value": "page" 357 | }, 358 | { 359 | "name": "page_icon", 360 | "value": "" 361 | }, 362 | { 363 | "name": "page_img", 364 | "value": "assets/components/flatso/images/golden-gate-bridge.jpg" 365 | }, 366 | { 367 | "name": "fpost_ids", 368 | "value": "" 369 | }, 370 | { 371 | "name": "hero_banner", 372 | "value": "" 373 | }, 374 | { 375 | "name": "carousel_ids", 376 | "value": "" 377 | }, 378 | { 379 | "name": "slider_ids", 380 | "value": "" 381 | }, 382 | { 383 | "name": "listing_ids", 384 | "value": "" 385 | }, 386 | { 387 | "name": "listbyparent", 388 | "value": "" 389 | } 390 | ], 391 | "others": [ 392 | { 393 | "name": "tagger-category", 394 | "value": "Landmarks" 395 | } 396 | ] 397 | }, 398 | { 399 | "pagetitle": "Redwood Forest", 400 | "longtitle": "Redwood Forest", 401 | "description": "Find everything you need to plan your Northern California vacation in the redwoods.", 402 | "introtext": "Find everything you need to plan your Northern California vacation in the redwoods.", 403 | "published": 1, 404 | "alias": "redwood-forest", 405 | "template": "MX Template", 406 | "file": "sample_resource.html", 407 | "parent": "Home", 408 | "tvs": [ 409 | { 410 | "name": "content_tpl", 411 | "value": "page" 412 | }, 413 | { 414 | "name": "body_tpl", 415 | "value": "page" 416 | }, 417 | { 418 | "name": "page_icon", 419 | "value": "" 420 | }, 421 | { 422 | "name": "page_img", 423 | "value": "assets/components/flatso/images/forest.jpg" 424 | }, 425 | { 426 | "name": "fpost_ids", 427 | "value": "" 428 | }, 429 | { 430 | "name": "hero_banner", 431 | "value": "" 432 | }, 433 | { 434 | "name": "carousel_ids", 435 | "value": "" 436 | }, 437 | { 438 | "name": "slider_ids", 439 | "value": "" 440 | }, 441 | { 442 | "name": "listing_ids", 443 | "value": "" 444 | }, 445 | { 446 | "name": "listbyparent", 447 | "value": "" 448 | } 449 | ], 450 | "others": [ 451 | { 452 | "name": "tagger-category", 453 | "value": "Landmarks" 454 | } 455 | ] 456 | }, 457 | { 458 | "pagetitle": "Golden City", 459 | "longtitle": "Golden City", 460 | "introtext": "Look at this beautiful color. ", 461 | "published": 1, 462 | "alias": "golden-city", 463 | "template": "MX Template", 464 | "file": "sample_resource.html", 465 | "parent": "Home", 466 | "tvs": [ 467 | { 468 | "name": "content_tpl", 469 | "value": "page" 470 | }, 471 | { 472 | "name": "body_tpl", 473 | "value": "page" 474 | }, 475 | { 476 | "name": "page_icon", 477 | "value": "" 478 | }, 479 | { 480 | "name": "page_img", 481 | "value": "assets/components/flatso/images/golden-city.jpg" 482 | }, 483 | { 484 | "name": "fpost_ids", 485 | "value": "" 486 | }, 487 | { 488 | "name": "hero_banner", 489 | "value": "yes" 490 | }, 491 | { 492 | "name": "carousel_ids", 493 | "value": "" 494 | }, 495 | { 496 | "name": "slider_ids", 497 | "value": "" 498 | }, 499 | { 500 | "name": "listing_ids", 501 | "value": "" 502 | }, 503 | { 504 | "name": "listbyparent", 505 | "value": "" 506 | } 507 | ], 508 | "others": [ 509 | { 510 | "name": "tagger-category", 511 | "value": "Landscapes" 512 | } 513 | ] 514 | }, 515 | { 516 | "pagetitle": "Downtown Hustle", 517 | "longtitle": "Downtown Hustle", 518 | "published": 1, 519 | "alias": "downtown-hustle", 520 | "template": "MX Template", 521 | "file": "sample_resource.html", 522 | "parent": "Home", 523 | "tvs": [ 524 | { 525 | "name": "content_tpl", 526 | "value": "page" 527 | }, 528 | { 529 | "name": "body_tpl", 530 | "value": "page" 531 | }, 532 | { 533 | "name": "page_icon", 534 | "value": "" 535 | }, 536 | { 537 | "name": "page_img", 538 | "value": "assets/components/flatso/images/downtown.jpg" 539 | }, 540 | { 541 | "name": "fpost_ids", 542 | "value": "" 543 | }, 544 | { 545 | "name": "hero_banner", 546 | "value": "yes" 547 | }, 548 | { 549 | "name": "carousel_ids", 550 | "value": "" 551 | }, 552 | { 553 | "name": "slider_ids", 554 | "value": "" 555 | }, 556 | { 557 | "name": "listing_ids", 558 | "value": "" 559 | }, 560 | { 561 | "name": "listbyparent", 562 | "value": "" 563 | } 564 | ], 565 | "others": [ 566 | { 567 | "name": "tagger-category", 568 | "value": "Landscapes" 569 | } 570 | ] 571 | }, 572 | { 573 | "pagetitle": "Coastal Beach House", 574 | "longtitle": "Coastal Beach House", 575 | "description": "The shores of Orange Park are a mellow sight.", 576 | "introtext": "The shores of Orange Park are a mellow sight.", 577 | "published": 1, 578 | "alias": "coastal-beach-house", 579 | "template": "MX Template", 580 | "file": "sample_resource.html", 581 | "parent": "Home", 582 | "tvs": [ 583 | { 584 | "name": "content_tpl", 585 | "value": "page" 586 | }, 587 | { 588 | "name": "body_tpl", 589 | "value": "page" 590 | }, 591 | { 592 | "name": "page_icon", 593 | "value": "" 594 | }, 595 | { 596 | "name": "page_img", 597 | "value": "assets/components/flatso/images/beach-house.jpg" 598 | }, 599 | { 600 | "name": "fpost_ids", 601 | "value": "" 602 | }, 603 | { 604 | "name": "hero_banner", 605 | "value": "yes" 606 | }, 607 | { 608 | "name": "carousel_ids", 609 | "value": "" 610 | }, 611 | { 612 | "name": "slider_ids", 613 | "value": "" 614 | }, 615 | { 616 | "name": "listing_ids", 617 | "value": "" 618 | }, 619 | { 620 | "name": "listbyparent", 621 | "value": "" 622 | } 623 | ], 624 | "others": [ 625 | { 626 | "name": "tagger-category", 627 | "value": "Landmarks" 628 | } 629 | ] 630 | }, 631 | { 632 | "pagetitle": "Surf City", 633 | "longtitle": "Surf City", 634 | "description": "Hang Ten Brah!", 635 | "introtext": "Hang Ten Brah!", 636 | "published": 1, 637 | "alias": "surf-city", 638 | "template": "MX Template", 639 | "file": "sample_resource.html", 640 | "parent": "Home", 641 | "tvs": [ 642 | { 643 | "name": "content_tpl", 644 | "value": "page" 645 | }, 646 | { 647 | "name": "body_tpl", 648 | "value": "page" 649 | }, 650 | { 651 | "name": "page_icon", 652 | "value": "" 653 | }, 654 | { 655 | "name": "page_img", 656 | "value": "assets/components/flatso/images/surf-city.jpg" 657 | }, 658 | { 659 | "name": "fpost_ids", 660 | "value": "" 661 | }, 662 | { 663 | "name": "hero_banner", 664 | "value": "yes" 665 | }, 666 | { 667 | "name": "carousel_ids", 668 | "value": "" 669 | }, 670 | { 671 | "name": "slider_ids", 672 | "value": "" 673 | }, 674 | { 675 | "name": "listing_ids", 676 | "value": "" 677 | }, 678 | { 679 | "name": "listbyparent", 680 | "value": "" 681 | } 682 | ], 683 | "others": [ 684 | { 685 | "name": "tagger-category", 686 | "value": "Landscapes" 687 | } 688 | ] 689 | } 690 | ], 691 | "systemSettings": [ 692 | { 693 | "key": "archive_id", 694 | "value": "" 695 | }, 696 | { 697 | "key": "blog_id", 698 | "value": "" 699 | }, 700 | { 701 | "key": "category_id", 702 | "value": "" 703 | }, 704 | { 705 | "key": "rss_id", 706 | "value": "" 707 | }, 708 | { 709 | "key": "site_logo", 710 | "value": "" 711 | } 712 | ] 713 | }, 714 | "dependencies": [ 715 | { 716 | "name": "mxt", 717 | "version": ">=1.0.0" 718 | }, 719 | { 720 | "name": "collections", 721 | "version": ">=3.2.0" 722 | }, 723 | { 724 | "name": "tagger", 725 | "version": ">=1.7.0" 726 | }, 727 | { 728 | "name": "getresources", 729 | "version": ">=1.6.0" 730 | }, 731 | { 732 | "name": "archivist", 733 | "version": ">=1.2.0" 734 | }, 735 | { 736 | "name": "getpage", 737 | "version": ">=1.2.0" 738 | }, 739 | { 740 | "name": "pthumb", 741 | "version": ">=2.3.0" 742 | }, 743 | { 744 | "name": "resizer", 745 | "version": ">=1.0.0" 746 | }, 747 | { 748 | "name": "switch", 749 | "version": ">=1.1.0" 750 | }, 751 | { 752 | "name": "clientconfig", 753 | "version": ">=1.3.0" 754 | } 755 | ], 756 | "build": { 757 | "readme": "docs/index.md", 758 | "license": "docs/license.md", 759 | "changelog": "docs/changelog.md", 760 | "setupOptions": { 761 | "source": "setup.options.php" 762 | }, 763 | "resolver": { 764 | "before": ["sample_content.php"], 765 | "after": ["sample_settings.php", "config.php"] 766 | } 767 | } 768 | } 769 | -------------------------------------------------------------------------------- /_build/gpm_resolvers/gpm.resolve.resources.php: -------------------------------------------------------------------------------- 1 | xpdo) return false; 13 | /** @var modX $modx */ 14 | $modx =& $object->xpdo; 15 | 16 | if (!function_exists('getResourceMap')) { 17 | function getResourceMap() { 18 | global $modx; 19 | 20 | $assetsPath = rtrim($modx->getOption('flatso.assets_path',null,$modx->getOption('assets_path').'components/flatso/'), '/') . '/'; 21 | $rmf = $assetsPath . 'resourcemap.php'; 22 | 23 | if (is_readable($rmf)) { 24 | $map = include $rmf; 25 | } else { 26 | $map = array(); 27 | } 28 | 29 | return $map; 30 | } 31 | } 32 | 33 | if (!function_exists('setResourceMap')) { 34 | function setResourceMap($resourceMap) { 35 | global $modx; 36 | 37 | $assetsPath = rtrim($modx->getOption('flatso.assets_path',null,$modx->getOption('assets_path').'components/flatso/'), '/') . '/'; 38 | $rmf = $assetsPath . 'resourcemap.php'; 39 | file_put_contents($rmf, 'getOption('tagger.core_path', null, $modx->getOption('core_path', null, MODX_CORE_PATH) . 'components/tagger/'); 60 | if (file_exists($taggerCorePath . 'model/tagger/tagger.class.php')) { 61 | /** @var Tagger $tagger */ 62 | $tagger = $modx->getService( 63 | 'tagger', 64 | 'Tagger', 65 | $taggerCorePath . 'model/tagger/', 66 | array( 67 | 'core_path' => $taggerCorePath 68 | ) 69 | ); 70 | 71 | $tagger = $tagger instanceof Tagger; 72 | } else { 73 | $tagger = null; 74 | } 75 | 76 | foreach ($others as $other) { 77 | if (($tagger == true) && (strpos($other['name'], 'tagger-') !== false)) { 78 | $groupAlias = preg_replace('/tagger-/', '', $other['name'], 1); 79 | 80 | $group = $modx->getObject('TaggerGroup', array('alias' => $groupAlias)); 81 | if ($group) { 82 | $other['name'] = 'tagger-' . $group->id; 83 | } 84 | } 85 | 86 | $resource[$other['name']] = $other['value']; 87 | } 88 | } 89 | 90 | $res = $modx->runProcessor('resource/create', $resource); 91 | $resObject = $res->getObject(); 92 | 93 | if ($resObject && isset($resObject['id'])) { 94 | /** @var modResource $modResource */ 95 | $modResource = $modx->getObject('modResource', array('id' => $resObject['id'])); 96 | 97 | if ($modResource) { 98 | foreach ($tvs as $tv) { 99 | $modResource->setTVValue($tv['name'], $tv['value']); 100 | } 101 | 102 | return $modResource->id; 103 | } 104 | } 105 | 106 | return false; 107 | } 108 | } 109 | 110 | if (!function_exists('updateResource')) { 111 | function updateResource($resource) { 112 | global $modx; 113 | 114 | if (isset($resource['tvs'])) { 115 | $tvs = $resource['tvs']; 116 | unset($resource['tvs']); 117 | } else { 118 | $tvs = array(); 119 | } 120 | 121 | if (isset($resource['others'])) { 122 | $others = $resource['others']; 123 | unset($resource['others']); 124 | 125 | $taggerCorePath = $modx->getOption('tagger.core_path', null, $modx->getOption('core_path', null, MODX_CORE_PATH) . 'components/tagger/'); 126 | if (file_exists($taggerCorePath . 'model/tagger/tagger.class.php')) { 127 | /** @var Tagger $tagger */ 128 | $tagger = $modx->getService( 129 | 'tagger', 130 | 'Tagger', 131 | $taggerCorePath . 'model/tagger/', 132 | array( 133 | 'core_path' => $taggerCorePath 134 | ) 135 | ); 136 | 137 | $tagger = $tagger instanceof Tagger; 138 | } else { 139 | $tagger = null; 140 | } 141 | 142 | foreach ($others as $other) { 143 | if (($tagger == true) && (strpos($other['name'], 'tagger-') !== false)) { 144 | $groupAlias = preg_replace('/tagger-/', '', $other['name'], 1); 145 | 146 | $group = $modx->getObject('TaggerGroup', array('alias' => $groupAlias)); 147 | if ($group) { 148 | $other['name'] = 'tagger-' . $group->id; 149 | } 150 | } 151 | 152 | $resource[$other['name']] = $other['value']; 153 | } 154 | } 155 | 156 | $res = $modx->runProcessor('resource/update', $resource); 157 | $resObject = $res->getObject(); 158 | 159 | if ($resObject && isset($resObject['id'])) { 160 | /** @var modResource $modResource */ 161 | $modResource = $modx->getObject('modResource', array('id' => $resObject['id'])); 162 | 163 | if ($modResource) { 164 | foreach ($tvs as $tv) { 165 | $modResource->setTVValue($tv['name'], $tv['value']); 166 | } 167 | 168 | return $modResource->id; 169 | } 170 | } 171 | 172 | return false; 173 | } 174 | } 175 | 176 | switch ($options[xPDOTransport::PACKAGE_ACTION]) { 177 | case xPDOTransport::ACTION_INSTALL: 178 | case xPDOTransport::ACTION_UPGRADE: 179 | $resources = array ( 180 | 0 => 181 | array ( 182 | 'pagetitle' => 'Home', 183 | 'alias' => 'index', 184 | 'parent' => 0, 185 | 'content' => '', 186 | 'context_key' => 'web', 187 | 'class_key' => 'CollectionContainer', 188 | 'longtitle' => '', 189 | 'description' => '', 190 | 'isfolder' => 1, 191 | 'introtext' => '', 192 | 'deleted' => 0, 193 | 'menutitle' => '', 194 | 'hide_children_in_tree' => 0, 195 | 'show_in_tree' => 1, 196 | 'set_as_home' => 1, 197 | 'tvs' => 198 | array ( 199 | 'content_tpl' => 200 | array ( 201 | 'name' => 'content_tpl', 202 | 'value' => 'listing', 203 | ), 204 | 'body_tpl' => 205 | array ( 206 | 'name' => 'body_tpl', 207 | 'value' => 'page', 208 | ), 209 | 'page_icon' => 210 | array ( 211 | 'name' => 'page_icon', 212 | 'value' => 'fa-home', 213 | ), 214 | 'page_img' => 215 | array ( 216 | 'name' => 'page_img', 217 | 'value' => 'assets/components/flatso/images/home-page-image.jpg', 218 | ), 219 | 'fpost_ids' => 220 | array ( 221 | 'name' => 'fpost_ids', 222 | 'value' => '9,10', 223 | ), 224 | 'hero_banner' => 225 | array ( 226 | 'name' => 'hero_banner', 227 | 'value' => 'yes', 228 | ), 229 | 'carousel_ids' => 230 | array ( 231 | 'name' => 'carousel_ids', 232 | 'value' => '', 233 | ), 234 | 'slider_ids' => 235 | array ( 236 | 'name' => 'slider_ids', 237 | 'value' => '', 238 | ), 239 | 'listing_ids' => 240 | array ( 241 | 'name' => 'listing_ids', 242 | 'value' => '', 243 | ), 244 | 'listbyparent' => 245 | array ( 246 | 'name' => 'listbyparent', 247 | 'value' => '', 248 | ), 249 | ), 250 | 'others' => 251 | array ( 252 | ), 253 | 'template' => 'MX Template', 254 | 'published' => 1, 255 | ), 256 | 1 => 257 | array ( 258 | 'pagetitle' => 'Categories', 259 | 'alias' => 'tags', 260 | 'parent' => 0, 261 | 'content' => '', 262 | 'context_key' => 'web', 263 | 'class_key' => 'modDocument', 264 | 'longtitle' => 'All Categories', 265 | 'description' => '', 266 | 'isfolder' => 1, 267 | 'introtext' => '', 268 | 'deleted' => 0, 269 | 'menutitle' => '', 270 | 'hide_children_in_tree' => 0, 271 | 'show_in_tree' => 1, 272 | 'set_as_home' => 0, 273 | 'tvs' => 274 | array ( 275 | 'content_tpl' => 276 | array ( 277 | 'name' => 'content_tpl', 278 | 'value' => 'listing', 279 | ), 280 | 'body_tpl' => 281 | array ( 282 | 'name' => 'body_tpl', 283 | 'value' => 'page', 284 | ), 285 | 'page_icon' => 286 | array ( 287 | 'name' => 'page_icon', 288 | 'value' => '', 289 | ), 290 | 'page_img' => 291 | array ( 292 | 'name' => 'page_img', 293 | 'value' => '', 294 | ), 295 | 'fpost_ids' => 296 | array ( 297 | 'name' => 'fpost_ids', 298 | 'value' => '', 299 | ), 300 | 'hero_banner' => 301 | array ( 302 | 'name' => 'hero_banner', 303 | 'value' => '', 304 | ), 305 | 'carousel_ids' => 306 | array ( 307 | 'name' => 'carousel_ids', 308 | 'value' => '', 309 | ), 310 | 'slider_ids' => 311 | array ( 312 | 'name' => 'slider_ids', 313 | 'value' => '', 314 | ), 315 | 'listing_ids' => 316 | array ( 317 | 'name' => 'listing_ids', 318 | 'value' => '', 319 | ), 320 | 'listbyparent' => 321 | array ( 322 | 'name' => 'listbyparent', 323 | 'value' => '', 324 | ), 325 | ), 326 | 'others' => 327 | array ( 328 | ), 329 | 'template' => 'MX Template', 330 | 'published' => 1, 331 | ), 332 | 2 => 333 | array ( 334 | 'pagetitle' => 'RSS', 335 | 'alias' => 'rss', 336 | 'parent' => 0, 337 | 'content' => '', 338 | 'context_key' => 'web', 339 | 'class_key' => 'modDocument', 340 | 'longtitle' => '', 341 | 'description' => '', 342 | 'isfolder' => 0, 343 | 'introtext' => 'RSS FEED', 344 | 'deleted' => 0, 345 | 'menutitle' => '', 346 | 'hide_children_in_tree' => 0, 347 | 'show_in_tree' => 1, 348 | 'set_as_home' => 0, 349 | 'tvs' => 350 | array ( 351 | ), 352 | 'others' => 353 | array ( 354 | ), 355 | 'template' => 'RSS', 356 | 'content_type' => 'RSS', 357 | 'published' => 1, 358 | 'hidemenu' => 1, 359 | 'cacheable' => 0, 360 | 'searchable' => 0, 361 | 'richtext' => 0, 362 | ), 363 | 3 => 364 | array ( 365 | 'pagetitle' => 'Style Guide', 366 | 'alias' => 'style-guide', 367 | 'parent' => 0, 368 | 'content' => '[[$styleguide]]', 369 | 'context_key' => 'web', 370 | 'class_key' => 'modDocument', 371 | 'longtitle' => 'Style Guide', 372 | 'description' => '', 373 | 'isfolder' => 0, 374 | 'introtext' => '', 375 | 'deleted' => 0, 376 | 'menutitle' => '', 377 | 'hide_children_in_tree' => 0, 378 | 'show_in_tree' => 1, 379 | 'set_as_home' => 0, 380 | 'tvs' => 381 | array ( 382 | 'content_tpl' => 383 | array ( 384 | 'name' => 'content_tpl', 385 | 'value' => 'page', 386 | ), 387 | 'body_tpl' => 388 | array ( 389 | 'name' => 'body_tpl', 390 | 'value' => 'page', 391 | ), 392 | 'page_icon' => 393 | array ( 394 | 'name' => 'page_icon', 395 | 'value' => '', 396 | ), 397 | 'page_img' => 398 | array ( 399 | 'name' => 'page_img', 400 | 'value' => 'assets/components/flatso/images/revine-yoga.jpg', 401 | ), 402 | 'fpost_ids' => 403 | array ( 404 | 'name' => 'fpost_ids', 405 | 'value' => '', 406 | ), 407 | 'hero_banner' => 408 | array ( 409 | 'name' => 'hero_banner', 410 | 'value' => 'yes', 411 | ), 412 | 'carousel_ids' => 413 | array ( 414 | 'name' => 'carousel_ids', 415 | 'value' => '', 416 | ), 417 | 'slider_ids' => 418 | array ( 419 | 'name' => 'slider_ids', 420 | 'value' => '', 421 | ), 422 | 'listing_ids' => 423 | array ( 424 | 'name' => 'listing_ids', 425 | 'value' => '', 426 | ), 427 | 'listbyparent' => 428 | array ( 429 | 'name' => 'listbyparent', 430 | 'value' => '', 431 | ), 432 | ), 433 | 'others' => 434 | array ( 435 | ), 436 | 'template' => 'MX Template', 437 | 'published' => 1, 438 | ), 439 | 4 => 440 | array ( 441 | 'pagetitle' => 'Archives', 442 | 'alias' => 'archives', 443 | 'parent' => 0, 444 | 'content' => '', 445 | 'context_key' => 'web', 446 | 'class_key' => 'modDocument', 447 | 'longtitle' => '[[+arc_month_name]] [[+arc_year]] Archives', 448 | 'description' => '', 449 | 'isfolder' => 1, 450 | 'introtext' => 'A lot can happen in a month', 451 | 'deleted' => 0, 452 | 'menutitle' => '', 453 | 'hide_children_in_tree' => 0, 454 | 'show_in_tree' => 1, 455 | 'set_as_home' => 0, 456 | 'tvs' => 457 | array ( 458 | 'content_tpl' => 459 | array ( 460 | 'name' => 'content_tpl', 461 | 'value' => 'listing', 462 | ), 463 | 'body_tpl' => 464 | array ( 465 | 'name' => 'body_tpl', 466 | 'value' => 'page', 467 | ), 468 | 'page_icon' => 469 | array ( 470 | 'name' => 'page_icon', 471 | 'value' => '', 472 | ), 473 | 'page_img' => 474 | array ( 475 | 'name' => 'page_img', 476 | 'value' => '', 477 | ), 478 | 'fpost_ids' => 479 | array ( 480 | 'name' => 'fpost_ids', 481 | 'value' => '', 482 | ), 483 | 'hero_banner' => 484 | array ( 485 | 'name' => 'hero_banner', 486 | 'value' => '', 487 | ), 488 | 'carousel_ids' => 489 | array ( 490 | 'name' => 'carousel_ids', 491 | 'value' => '', 492 | ), 493 | 'slider_ids' => 494 | array ( 495 | 'name' => 'slider_ids', 496 | 'value' => '', 497 | ), 498 | 'listing_ids' => 499 | array ( 500 | 'name' => 'listing_ids', 501 | 'value' => '', 502 | ), 503 | 'listbyparent' => 504 | array ( 505 | 'name' => 'listbyparent', 506 | 'value' => '', 507 | ), 508 | ), 509 | 'others' => 510 | array ( 511 | ), 512 | 'template' => 'MX Template', 513 | 'published' => 1, 514 | ), 515 | 5 => 516 | array ( 517 | 'pagetitle' => 'Golden Gate Bridge', 518 | 'alias' => 'golden-gate-bridge', 519 | 'parent' => 'Home', 520 | 'content' => '
521 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation. 522 |
523 |524 | Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. 525 |
526 |527 | Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur. 528 |
', 529 | 'context_key' => 'web', 530 | 'class_key' => 'modDocument', 531 | 'longtitle' => 'Golden Gate Bridge', 532 | 'description' => 'Golden Gate Bridge spans the San Francisco Bay.', 533 | 'isfolder' => 0, 534 | 'introtext' => 'Golden Gate Bridge spans the San Francisco Bay.', 535 | 'deleted' => 0, 536 | 'menutitle' => '', 537 | 'hide_children_in_tree' => 0, 538 | 'show_in_tree' => 1, 539 | 'set_as_home' => 0, 540 | 'tvs' => 541 | array ( 542 | 'content_tpl' => 543 | array ( 544 | 'name' => 'content_tpl', 545 | 'value' => 'page', 546 | ), 547 | 'body_tpl' => 548 | array ( 549 | 'name' => 'body_tpl', 550 | 'value' => 'page', 551 | ), 552 | 'page_icon' => 553 | array ( 554 | 'name' => 'page_icon', 555 | 'value' => '', 556 | ), 557 | 'page_img' => 558 | array ( 559 | 'name' => 'page_img', 560 | 'value' => 'assets/components/flatso/images/golden-gate-bridge.jpg', 561 | ), 562 | 'fpost_ids' => 563 | array ( 564 | 'name' => 'fpost_ids', 565 | 'value' => '', 566 | ), 567 | 'hero_banner' => 568 | array ( 569 | 'name' => 'hero_banner', 570 | 'value' => '', 571 | ), 572 | 'carousel_ids' => 573 | array ( 574 | 'name' => 'carousel_ids', 575 | 'value' => '', 576 | ), 577 | 'slider_ids' => 578 | array ( 579 | 'name' => 'slider_ids', 580 | 'value' => '', 581 | ), 582 | 'listing_ids' => 583 | array ( 584 | 'name' => 'listing_ids', 585 | 'value' => '', 586 | ), 587 | 'listbyparent' => 588 | array ( 589 | 'name' => 'listbyparent', 590 | 'value' => '', 591 | ), 592 | ), 593 | 'others' => 594 | array ( 595 | 0 => 596 | array ( 597 | 'name' => 'tagger-category', 598 | 'value' => 'Landmarks', 599 | ), 600 | ), 601 | 'template' => 'MX Template', 602 | 'published' => 1, 603 | ), 604 | 6 => 605 | array ( 606 | 'pagetitle' => 'Redwood Forest', 607 | 'alias' => 'redwood-forest', 608 | 'parent' => 'Home', 609 | 'content' => '610 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation. 611 |
612 |613 | Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. 614 |
615 |616 | Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur. 617 |
', 618 | 'context_key' => 'web', 619 | 'class_key' => 'modDocument', 620 | 'longtitle' => 'Redwood Forest', 621 | 'description' => 'Find everything you need to plan your Northern California vacation in the redwoods.', 622 | 'isfolder' => 0, 623 | 'introtext' => 'Find everything you need to plan your Northern California vacation in the redwoods.', 624 | 'deleted' => 0, 625 | 'menutitle' => '', 626 | 'hide_children_in_tree' => 0, 627 | 'show_in_tree' => 1, 628 | 'set_as_home' => 0, 629 | 'tvs' => 630 | array ( 631 | 'content_tpl' => 632 | array ( 633 | 'name' => 'content_tpl', 634 | 'value' => 'page', 635 | ), 636 | 'body_tpl' => 637 | array ( 638 | 'name' => 'body_tpl', 639 | 'value' => 'page', 640 | ), 641 | 'page_icon' => 642 | array ( 643 | 'name' => 'page_icon', 644 | 'value' => '', 645 | ), 646 | 'page_img' => 647 | array ( 648 | 'name' => 'page_img', 649 | 'value' => 'assets/components/flatso/images/forest.jpg', 650 | ), 651 | 'fpost_ids' => 652 | array ( 653 | 'name' => 'fpost_ids', 654 | 'value' => '', 655 | ), 656 | 'hero_banner' => 657 | array ( 658 | 'name' => 'hero_banner', 659 | 'value' => '', 660 | ), 661 | 'carousel_ids' => 662 | array ( 663 | 'name' => 'carousel_ids', 664 | 'value' => '', 665 | ), 666 | 'slider_ids' => 667 | array ( 668 | 'name' => 'slider_ids', 669 | 'value' => '', 670 | ), 671 | 'listing_ids' => 672 | array ( 673 | 'name' => 'listing_ids', 674 | 'value' => '', 675 | ), 676 | 'listbyparent' => 677 | array ( 678 | 'name' => 'listbyparent', 679 | 'value' => '', 680 | ), 681 | ), 682 | 'others' => 683 | array ( 684 | 0 => 685 | array ( 686 | 'name' => 'tagger-category', 687 | 'value' => 'Landmarks', 688 | ), 689 | ), 690 | 'template' => 'MX Template', 691 | 'published' => 1, 692 | ), 693 | 7 => 694 | array ( 695 | 'pagetitle' => 'Golden City', 696 | 'alias' => 'golden-city', 697 | 'parent' => 'Home', 698 | 'content' => '699 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation. 700 |
701 |702 | Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. 703 |
704 |705 | Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur. 706 |
', 707 | 'context_key' => 'web', 708 | 'class_key' => 'modDocument', 709 | 'longtitle' => 'Golden City', 710 | 'description' => '', 711 | 'isfolder' => 0, 712 | 'introtext' => 'Look at this beautiful color. ', 713 | 'deleted' => 0, 714 | 'menutitle' => '', 715 | 'hide_children_in_tree' => 0, 716 | 'show_in_tree' => 1, 717 | 'set_as_home' => 0, 718 | 'tvs' => 719 | array ( 720 | 'content_tpl' => 721 | array ( 722 | 'name' => 'content_tpl', 723 | 'value' => 'page', 724 | ), 725 | 'body_tpl' => 726 | array ( 727 | 'name' => 'body_tpl', 728 | 'value' => 'page', 729 | ), 730 | 'page_icon' => 731 | array ( 732 | 'name' => 'page_icon', 733 | 'value' => '', 734 | ), 735 | 'page_img' => 736 | array ( 737 | 'name' => 'page_img', 738 | 'value' => 'assets/components/flatso/images/golden-city.jpg', 739 | ), 740 | 'fpost_ids' => 741 | array ( 742 | 'name' => 'fpost_ids', 743 | 'value' => '', 744 | ), 745 | 'hero_banner' => 746 | array ( 747 | 'name' => 'hero_banner', 748 | 'value' => 'yes', 749 | ), 750 | 'carousel_ids' => 751 | array ( 752 | 'name' => 'carousel_ids', 753 | 'value' => '', 754 | ), 755 | 'slider_ids' => 756 | array ( 757 | 'name' => 'slider_ids', 758 | 'value' => '', 759 | ), 760 | 'listing_ids' => 761 | array ( 762 | 'name' => 'listing_ids', 763 | 'value' => '', 764 | ), 765 | 'listbyparent' => 766 | array ( 767 | 'name' => 'listbyparent', 768 | 'value' => '', 769 | ), 770 | ), 771 | 'others' => 772 | array ( 773 | 0 => 774 | array ( 775 | 'name' => 'tagger-category', 776 | 'value' => 'Landscapes', 777 | ), 778 | ), 779 | 'template' => 'MX Template', 780 | 'published' => 1, 781 | ), 782 | 8 => 783 | array ( 784 | 'pagetitle' => 'Downtown Hustle', 785 | 'alias' => 'downtown-hustle', 786 | 'parent' => 'Home', 787 | 'content' => '788 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation. 789 |
790 |791 | Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. 792 |
793 |794 | Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur. 795 |
', 796 | 'context_key' => 'web', 797 | 'class_key' => 'modDocument', 798 | 'longtitle' => 'Downtown Hustle', 799 | 'description' => '', 800 | 'isfolder' => 0, 801 | 'introtext' => '', 802 | 'deleted' => 0, 803 | 'menutitle' => '', 804 | 'hide_children_in_tree' => 0, 805 | 'show_in_tree' => 1, 806 | 'set_as_home' => 0, 807 | 'tvs' => 808 | array ( 809 | 'content_tpl' => 810 | array ( 811 | 'name' => 'content_tpl', 812 | 'value' => 'page', 813 | ), 814 | 'body_tpl' => 815 | array ( 816 | 'name' => 'body_tpl', 817 | 'value' => 'page', 818 | ), 819 | 'page_icon' => 820 | array ( 821 | 'name' => 'page_icon', 822 | 'value' => '', 823 | ), 824 | 'page_img' => 825 | array ( 826 | 'name' => 'page_img', 827 | 'value' => 'assets/components/flatso/images/downtown.jpg', 828 | ), 829 | 'fpost_ids' => 830 | array ( 831 | 'name' => 'fpost_ids', 832 | 'value' => '', 833 | ), 834 | 'hero_banner' => 835 | array ( 836 | 'name' => 'hero_banner', 837 | 'value' => 'yes', 838 | ), 839 | 'carousel_ids' => 840 | array ( 841 | 'name' => 'carousel_ids', 842 | 'value' => '', 843 | ), 844 | 'slider_ids' => 845 | array ( 846 | 'name' => 'slider_ids', 847 | 'value' => '', 848 | ), 849 | 'listing_ids' => 850 | array ( 851 | 'name' => 'listing_ids', 852 | 'value' => '', 853 | ), 854 | 'listbyparent' => 855 | array ( 856 | 'name' => 'listbyparent', 857 | 'value' => '', 858 | ), 859 | ), 860 | 'others' => 861 | array ( 862 | 0 => 863 | array ( 864 | 'name' => 'tagger-category', 865 | 'value' => 'Landscapes', 866 | ), 867 | ), 868 | 'template' => 'MX Template', 869 | 'published' => 1, 870 | ), 871 | 9 => 872 | array ( 873 | 'pagetitle' => 'Coastal Beach House', 874 | 'alias' => 'coastal-beach-house', 875 | 'parent' => 'Home', 876 | 'content' => '877 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation. 878 |
879 |880 | Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. 881 |
882 |883 | Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur. 884 |
', 885 | 'context_key' => 'web', 886 | 'class_key' => 'modDocument', 887 | 'longtitle' => 'Coastal Beach House', 888 | 'description' => 'The shores of Orange Park are a mellow sight.', 889 | 'isfolder' => 0, 890 | 'introtext' => 'The shores of Orange Park are a mellow sight.', 891 | 'deleted' => 0, 892 | 'menutitle' => '', 893 | 'hide_children_in_tree' => 0, 894 | 'show_in_tree' => 1, 895 | 'set_as_home' => 0, 896 | 'tvs' => 897 | array ( 898 | 'content_tpl' => 899 | array ( 900 | 'name' => 'content_tpl', 901 | 'value' => 'page', 902 | ), 903 | 'body_tpl' => 904 | array ( 905 | 'name' => 'body_tpl', 906 | 'value' => 'page', 907 | ), 908 | 'page_icon' => 909 | array ( 910 | 'name' => 'page_icon', 911 | 'value' => '', 912 | ), 913 | 'page_img' => 914 | array ( 915 | 'name' => 'page_img', 916 | 'value' => 'assets/components/flatso/images/beach-house.jpg', 917 | ), 918 | 'fpost_ids' => 919 | array ( 920 | 'name' => 'fpost_ids', 921 | 'value' => '', 922 | ), 923 | 'hero_banner' => 924 | array ( 925 | 'name' => 'hero_banner', 926 | 'value' => 'yes', 927 | ), 928 | 'carousel_ids' => 929 | array ( 930 | 'name' => 'carousel_ids', 931 | 'value' => '', 932 | ), 933 | 'slider_ids' => 934 | array ( 935 | 'name' => 'slider_ids', 936 | 'value' => '', 937 | ), 938 | 'listing_ids' => 939 | array ( 940 | 'name' => 'listing_ids', 941 | 'value' => '', 942 | ), 943 | 'listbyparent' => 944 | array ( 945 | 'name' => 'listbyparent', 946 | 'value' => '', 947 | ), 948 | ), 949 | 'others' => 950 | array ( 951 | 0 => 952 | array ( 953 | 'name' => 'tagger-category', 954 | 'value' => 'Landmarks', 955 | ), 956 | ), 957 | 'template' => 'MX Template', 958 | 'published' => 1, 959 | ), 960 | 10 => 961 | array ( 962 | 'pagetitle' => 'Surf City', 963 | 'alias' => 'surf-city', 964 | 'parent' => 'Home', 965 | 'content' => '966 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation. 967 |
968 |969 | Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. 970 |
971 |972 | Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur. 973 |
', 974 | 'context_key' => 'web', 975 | 'class_key' => 'modDocument', 976 | 'longtitle' => 'Surf City', 977 | 'description' => 'Hang Ten Brah!', 978 | 'isfolder' => 0, 979 | 'introtext' => 'Hang Ten Brah!', 980 | 'deleted' => 0, 981 | 'menutitle' => '', 982 | 'hide_children_in_tree' => 0, 983 | 'show_in_tree' => 1, 984 | 'set_as_home' => 0, 985 | 'tvs' => 986 | array ( 987 | 'content_tpl' => 988 | array ( 989 | 'name' => 'content_tpl', 990 | 'value' => 'page', 991 | ), 992 | 'body_tpl' => 993 | array ( 994 | 'name' => 'body_tpl', 995 | 'value' => 'page', 996 | ), 997 | 'page_icon' => 998 | array ( 999 | 'name' => 'page_icon', 1000 | 'value' => '', 1001 | ), 1002 | 'page_img' => 1003 | array ( 1004 | 'name' => 'page_img', 1005 | 'value' => 'assets/components/flatso/images/surf-city.jpg', 1006 | ), 1007 | 'fpost_ids' => 1008 | array ( 1009 | 'name' => 'fpost_ids', 1010 | 'value' => '', 1011 | ), 1012 | 'hero_banner' => 1013 | array ( 1014 | 'name' => 'hero_banner', 1015 | 'value' => 'yes', 1016 | ), 1017 | 'carousel_ids' => 1018 | array ( 1019 | 'name' => 'carousel_ids', 1020 | 'value' => '', 1021 | ), 1022 | 'slider_ids' => 1023 | array ( 1024 | 'name' => 'slider_ids', 1025 | 'value' => '', 1026 | ), 1027 | 'listing_ids' => 1028 | array ( 1029 | 'name' => 'listing_ids', 1030 | 'value' => '', 1031 | ), 1032 | 'listbyparent' => 1033 | array ( 1034 | 'name' => 'listbyparent', 1035 | 'value' => '', 1036 | ), 1037 | ), 1038 | 'others' => 1039 | array ( 1040 | 0 => 1041 | array ( 1042 | 'name' => 'tagger-category', 1043 | 'value' => 'Landscapes', 1044 | ), 1045 | ), 1046 | 'template' => 'MX Template', 1047 | 'published' => 1, 1048 | ), 1049 | ); 1050 | 1051 | if (isset($options['install_resources']) && empty($options['install_resources'])) return true; 1052 | 1053 | $resourceMap = getResourceMap(); 1054 | $toRemove = $resourceMap; 1055 | $siteStart = $modx->getOption('site_start'); 1056 | 1057 | foreach ($resources as $resource) { 1058 | if (is_string($resource['parent'])) { 1059 | if (isset($resourceMap[$resource['parent']])) { 1060 | $resource['parent'] = $resourceMap[$resource['parent']]; 1061 | } else { 1062 | /** @var modResource $parent */ 1063 | $parent = $modx->getObject('modResource', array('pagetitle' => $resource['parent'])); 1064 | if ($parent) { 1065 | $resource['parent'] = $parent->id; 1066 | } 1067 | } 1068 | } else { 1069 | if ($resource['parent'] != 0) { 1070 | /** @var modResource $parent */ 1071 | $parent = $modx->getObject('modResource', array('id' => $resource['parent'])); 1072 | if ($parent) { 1073 | $resource['parent'] = $parent->id; 1074 | } 1075 | } else { 1076 | $resource['parent'] = 0; 1077 | } 1078 | } 1079 | 1080 | if ($resource['template'] !== null) { 1081 | if ($resource['template'] !== 0) { 1082 | $template = $modx->getObject('modTemplate', array('templatename' => $resource['template'])); 1083 | if ($template) { 1084 | $resource['template'] = $template->id; 1085 | } 1086 | } else { 1087 | $resource['template'] = 0; 1088 | } 1089 | } 1090 | 1091 | if ($resource['content_type'] !== null) { 1092 | $content_type = $modx->getObject('modContentType', array('name' => $resource['content_type'])); 1093 | if ($content_type) { 1094 | $resource['content_type'] = $content_type->id; 1095 | } 1096 | } else { 1097 | $resource['content_type'] = $modx->getOption('default_content_type', null, 1); 1098 | } 1099 | 1100 | if (isset($resourceMap[$resource['pagetitle']])) { 1101 | unset($toRemove[$resource['pagetitle']]); 1102 | 1103 | /** @var modResource $exists */ 1104 | $exists = $modx->getObject('modResource', array('id' => $resourceMap[$resource['pagetitle']])); 1105 | if ($exists) { 1106 | $resource['id'] = $exists->id; 1107 | $resId = updateResource($resource); 1108 | 1109 | if ($resId !== false) { 1110 | $resourceMap[$resource['pagetitle']] = $resId; 1111 | } 1112 | } else { 1113 | if ($resource['set_as_home'] == 1) { 1114 | unset($resource['set_as_home']); 1115 | $resource['id'] = $siteStart; 1116 | 1117 | $resId = updateResource($resource); 1118 | 1119 | if ($resId !== false) { 1120 | $resourceMap[$resource['pagetitle']] = $resId; 1121 | } 1122 | } else { 1123 | $resId = createResource($resource); 1124 | 1125 | if ($resId !== false) { 1126 | $resourceMap[$resource['pagetitle']] = $resId; 1127 | } 1128 | } 1129 | } 1130 | } else { 1131 | if ($resource['set_as_home'] == 1) { 1132 | unset($resource['set_as_home']); 1133 | $resource['id'] = $siteStart; 1134 | 1135 | $resId = updateResource($resource); 1136 | 1137 | if ($resId !== false) { 1138 | $resourceMap[$resource['pagetitle']] = $resId; 1139 | } 1140 | } else { 1141 | $resId = createResource($resource); 1142 | 1143 | if ($resId !== false) { 1144 | $resourceMap[$resource['pagetitle']] = $resId; 1145 | } 1146 | } 1147 | } 1148 | } 1149 | 1150 | foreach ($toRemove as $pageTitle => $resource) { 1151 | unset($resourceMap[$pageTitle]); 1152 | 1153 | if ($resource == $siteStart) continue; 1154 | 1155 | /** @var modResource $modResource */ 1156 | $modResource = $modx->getObject('modResource', $resource); 1157 | if ($modResource) { 1158 | $modx->updateCollection('modResource', array('parent' => 0), array('parent' => $resource)); 1159 | 1160 | $modResource->remove(); 1161 | } 1162 | } 1163 | 1164 | setResourceMap($resourceMap); 1165 | 1166 | break; 1167 | case xPDOTransport::ACTION_UNINSTALL: 1168 | 1169 | break; 1170 | } 1171 | 1172 | return true; -------------------------------------------------------------------------------- /_build/resolvers/config.php: -------------------------------------------------------------------------------- 1 | xpdo) return false; 3 | /** @var modX $modx */ 4 | $modx =& $object->xpdo; 5 | 6 | if (!function_exists('getResourceMap')) { 7 | function getResourceMap() { 8 | global $modx; 9 | 10 | $assetsPath = rtrim($modx->getOption('flatso.assets_path',null,$modx->getOption('assets_path').'components/flatso/'), '/') . '/'; 11 | $rmf = $assetsPath . 'resourcemap.php'; 12 | 13 | if (is_readable($rmf)) { 14 | $map = include $rmf; 15 | } else { 16 | $map = array(); 17 | } 18 | 19 | return $map; 20 | } 21 | } 22 | 23 | if (!function_exists('createClientConfigSettings')) { 24 | function createClientConfigSettings($rssResource) { 25 | global $modx; 26 | 27 | $clientConfigCorePath = $modx->getOption('clientconfig.core_path', null, $modx->getOption('core_path', null, MODX_CORE_PATH) . 'components/clientconfig/'); 28 | /** @var ClientConfig $clientConfig */ 29 | $clientConfig = $modx->getService( 30 | 'clientconfig', 31 | 'ClientConfig', 32 | $clientConfigCorePath . 'model/clientconfig/', 33 | array( 34 | 'core_path' => $clientConfigCorePath 35 | ) 36 | ); 37 | 38 | $groups = array(); 39 | 40 | $group = $modx->getObject('cgGroup', array('label' => 'Global')); 41 | if (!$group) { 42 | $group = $modx->newObject('cgGroup'); 43 | $group->set('label', 'Global'); 44 | $group->set('description', ''); 45 | $group->set('sortorder', '0'); 46 | $group->save(); 47 | } 48 | $groups['global'] = $group->id; 49 | 50 | $group = $modx->getObject('cgGroup', array('label' => 'Fonts')); 51 | if (!$group) { 52 | $group = $modx->newObject('cgGroup'); 53 | $group->set('label', 'Fonts'); 54 | $group->set('description', ''); 55 | $group->set('sortorder', '1'); 56 | $group->save(); 57 | } 58 | $groups['fonts'] = $group->id; 59 | 60 | $group = $modx->getObject('cgGroup', array('label' => 'Mobile')); 61 | if (!$group) { 62 | $group = $modx->newObject('cgGroup'); 63 | $group->set('label', 'Mobile'); 64 | $group->set('description', ''); 65 | $group->set('sortorder', '3'); 66 | $group->save(); 67 | } 68 | $groups['mobile'] = $group->id; 69 | 70 | $group = $modx->getObject('cgGroup', array('label' => 'Content')); 71 | if (!$group) { 72 | $group = $modx->newObject('cgGroup'); 73 | $group->set('label', 'Content'); 74 | $group->set('description', ''); 75 | $group->set('sortorder', '90'); 76 | $group->save(); 77 | } 78 | $groups['content'] = $group->id; 79 | 80 | $group = $modx->getObject('cgGroup', array('label' => 'Social Media')); 81 | if (!$group) { 82 | $group = $modx->newObject('cgGroup'); 83 | $group->set('label', 'Social Media'); 84 | $group->set('description', ''); 85 | $group->set('sortorder', '91'); 86 | $group->save(); 87 | } 88 | $groups['socialmedia'] = $group->id; 89 | 90 | $group = $modx->getObject('cgGroup', array('label' => 'Images')); 91 | if (!$group) { 92 | $group = $modx->newObject('cgGroup'); 93 | $group->set('label', 'Images'); 94 | $group->set('description', ''); 95 | $group->set('sortorder', '95'); 96 | $group->save(); 97 | } 98 | $groups['images'] = $group->id; 99 | 100 | $group = $modx->getObject('cgGroup', array('label' => 'JS')); 101 | if (!$group) { 102 | $group = $modx->newObject('cgGroup'); 103 | $group->set('label', 'JS'); 104 | $group->set('description', ''); 105 | $group->set('sortorder', '99'); 106 | $group->save(); 107 | } 108 | $groups['js'] = $group->id; 109 | 110 | $settings = array( 111 | array( 112 | 'key' => 'cc_font_script', 113 | 'label' => 'External Font Script(s)', 114 | 'xtype' => 'textarea', 115 | 'description' => '', 116 | 'is_required' => '0', 117 | 'sortorder' => '0', 118 | 'value' => "", 119 | 'default' => '', 120 | 'group' => $groups['fonts'], 121 | 'options' => '' 122 | ), 123 | array( 124 | 'key' => 'cc_body_font', 125 | 'label' => 'Body Font Family', 126 | 'xtype' => 'textfield', 127 | 'description' => '', 128 | 'is_required' => '0', 129 | 'sortorder' => '1', 130 | 'value' => "font-family: 'Lato', Arial, sans-serif; font-weight: 400;", 131 | 'default' => '', 132 | 'group' => $groups['fonts'], 133 | 'options' => '' 134 | ), 135 | array( 136 | 'key' => 'cc_heading_font', 137 | 'label' => 'Heading Font Family', 138 | 'xtype' => 'textfield', 139 | 'description' => '', 140 | 'is_required' => '0', 141 | 'sortorder' => '2', 142 | 'value' => "font-weight: 900;", 143 | 'default' => '', 144 | 'group' => $groups['fonts'], 145 | 'options' => '' 146 | ), 147 | array( 148 | 'key' => 'cc_light_font', 149 | 'label' => 'Light Font Family', 150 | 'xtype' => 'textfield', 151 | 'description' => '', 152 | 'is_required' => '0', 153 | 'sortorder' => '3', 154 | 'value' => "font-weight: 300;", 155 | 'default' => '', 156 | 'group' => $groups['fonts'], 157 | 'options' => '' 158 | ), 159 | array( 160 | 'key' => 'cc_primary_color', 161 | 'label' => 'Primary Color', 162 | 'xtype' => 'colorpickerfield', 163 | 'description' => '', 164 | 'is_required' => '0', 165 | 'sortorder' => '0', 166 | 'value' => "6e9924", 167 | 'default' => '', 168 | 'group' => $groups['global'], 169 | 'options' => '' 170 | ), 171 | array( 172 | 'key' => 'cc_secondary_color', 173 | 'label' => 'Secondary Color', 174 | 'xtype' => 'colorpickerfield', 175 | 'description' => '', 176 | 'is_required' => '0', 177 | 'sortorder' => '1', 178 | 'value' => "444444", 179 | 'default' => '', 180 | 'group' => $groups['global'], 181 | 'options' => '' 182 | ), 183 | array( 184 | 'key' => 'cc_third_color', 185 | 'label' => 'Third Color', 186 | 'xtype' => 'colorpickerfield', 187 | 'description' => '', 188 | 'is_required' => '0', 189 | 'sortorder' => '1', 190 | 'value' => "aaaaaa", 191 | 'default' => '', 192 | 'group' => $groups['global'], 193 | 'options' => '' 194 | ), 195 | array( 196 | 'key' => 'cc_body_bg_color', 197 | 'label' => 'Body BG Color', 198 | 'xtype' => 'colorpickerfield', 199 | 'description' => '', 200 | 'is_required' => '0', 201 | 'sortorder' => '2', 202 | 'value' => "ececec", 203 | 'default' => '', 204 | 'group' => $groups['global'], 205 | 'options' => '' 206 | ), 207 | array( 208 | 'key' => 'cc_body_font_color', 209 | 'label' => 'Body Font Color', 210 | 'xtype' => 'colorpickerfield', 211 | 'description' => '', 212 | 'is_required' => '0', 213 | 'sortorder' => '3', 214 | 'value' => "3a3a3a", 215 | 'default' => '', 216 | 'group' => $groups['global'], 217 | 'options' => '' 218 | ), 219 | array( 220 | 'key' => 'cc_header_background', 221 | 'label' => 'Header BG Color', 222 | 'xtype' => 'colorpickerfield', 223 | 'description' => '', 224 | 'is_required' => '0', 225 | 'sortorder' => '4', 226 | 'value' => "444444", 227 | 'default' => '', 228 | 'group' => $groups['global'], 229 | 'options' => '' 230 | ), 231 | array( 232 | 'key' => 'cc_nav_link', 233 | 'label' => 'Nav Link Color', 234 | 'xtype' => 'colorpickerfield', 235 | 'description' => '', 236 | 'is_required' => '0', 237 | 'sortorder' => '5', 238 | 'value' => "f2f2f2", 239 | 'default' => '', 240 | 'group' => $groups['global'], 241 | 'options' => '' 242 | ), 243 | array( 244 | 'key' => 'cc_nav_link_hover', 245 | 'label' => 'Nav Link Hover Color', 246 | 'xtype' => 'colorpickerfield', 247 | 'description' => '', 248 | 'is_required' => '0', 249 | 'sortorder' => '6', 250 | 'value' => "6e9924", 251 | 'default' => '', 252 | 'group' => $groups['global'], 253 | 'options' => '' 254 | ), 255 | array( 256 | 'key' => 'cc_js_link', 257 | 'label' => 'JS Library Link', 258 | 'xtype' => 'textfield', 259 | 'description' => '', 260 | 'is_required' => '0', 261 | 'sortorder' => '0', 262 | 'value' => "", 263 | 'default' => '', 264 | 'group' => $groups['js'], 265 | 'options' => '' 266 | ), 267 | array( 268 | 'key' => 'cc_mobile_background', 269 | 'label' => 'Mobile Background Color', 270 | 'xtype' => 'colorpickerfield', 271 | 'description' => '', 272 | 'is_required' => '0', 273 | 'sortorder' => '0', 274 | 'value' => "6e9924", 275 | 'default' => '', 276 | 'group' => $groups['mobile'], 277 | 'options' => '' 278 | ), 279 | array( 280 | 'key' => 'cc_mobile_link', 281 | 'label' => 'Mobile Link Color', 282 | 'xtype' => 'colorpickerfield', 283 | 'description' => '', 284 | 'is_required' => '0', 285 | 'sortorder' => '1', 286 | 'value' => "FFFFFF", 287 | 'default' => '', 288 | 'group' => $groups['mobile'], 289 | 'options' => '' 290 | ), 291 | array( 292 | 'key' => 'cc_mobile_link_hover', 293 | 'label' => 'Mobile Link Hover Color', 294 | 'xtype' => 'colorpickerfield', 295 | 'description' => '', 296 | 'is_required' => '0', 297 | 'sortorder' => '2', 298 | 'value' => "333333", 299 | 'default' => '', 300 | 'group' => $groups['mobile'], 301 | 'options' => '' 302 | ), 303 | array( 304 | 'key' => 'cc_logo', 305 | 'label' => 'Site Logo', 306 | 'xtype' => 'modx-panel-tv-image', 307 | 'description' => '', 308 | 'is_required' => '0', 309 | 'sortorder' => '0', 310 | 'value' => "assets/components/flatso/images/modx-revo-2_3-icon.png", 311 | 'default' => '', 312 | 'group' => $groups['images'], 313 | 'options' => '' 314 | ), 315 | array( 316 | 'key' => 'cc_site_title', 317 | 'label' => 'Site Title', 318 | 'xtype' => 'textfield', 319 | 'description' => '', 320 | 'is_required' => '0', 321 | 'sortorder' => '0', 322 | 'value' => "Flatso", 323 | 'default' => '', 324 | 'group' => $groups['content'], 325 | 'options' => '' 326 | ), 327 | array( 328 | 'key' => 'cc_sidebar_title', 329 | 'label' => 'Sidebar Widget Title', 330 | 'xtype' => 'textfield', 331 | 'description' => '', 332 | 'is_required' => '0', 333 | 'sortorder' => '1', 334 | 'value' => "ABOUT ME", 335 | 'default' => '', 336 | 'group' => $groups['content'], 337 | 'options' => '' 338 | ), 339 | array( 340 | 'key' => 'cc_sidebar_img', 341 | 'label' => 'Sidebar Widget Image', 342 | 'xtype' => 'modx-panel-tv-image', 343 | 'description' => '', 344 | 'is_required' => '0', 345 | 'sortorder' => '3', 346 | 'value' => "assets/components/flatso/images/wayne-avatar.jpg", 347 | 'default' => '', 348 | 'group' => $groups['content'], 349 | 'options' => '' 350 | ), 351 | array( 352 | 'key' => 'cc_sidebar_subtitle', 353 | 'label' => 'Sidebar Widget Subtitle', 354 | 'xtype' => 'textfield', 355 | 'description' => '', 356 | 'is_required' => '0', 357 | 'sortorder' => '2', 358 | 'value' => "BIO", 359 | 'default' => '', 360 | 'group' => $groups['content'], 361 | 'options' => '' 362 | ), 363 | array( 364 | 'key' => 'cc_sidebar_message', 365 | 'label' => 'Sidebar Widget Message', 366 | 'xtype' => 'textarea', 367 | 'description' => '', 368 | 'is_required' => '0', 369 | 'sortorder' => '3', 370 | 'value' => "Hamburger ullamco alcatra exercitation prosciutto shoulder pork loin. Minim ham hock duis picanha incididunt turkey sed swine ball tip consectetur dolore. Hamburger ham deserunt, et minim frankfurter occaecat id. Pastrami est picanha kevin cow. Ea rump doner pork belly boudin.", 371 | 'default' => '', 372 | 'group' => $groups['content'], 373 | 'options' => '' 374 | ), 375 | array( 376 | 'key' => 'cc_featured_title', 377 | 'label' => 'Featured Post Sidebar Title', 378 | 'xtype' => 'textfield', 379 | 'description' => '', 380 | 'is_required' => '0', 381 | 'sortorder' => '4', 382 | 'value' => "Featured Posts", 383 | 'default' => '', 384 | 'group' => $groups['content'], 385 | 'options' => '' 386 | ), 387 | array( 388 | 'key' => 'cc_social_title', 389 | 'label' => 'Widget Title', 390 | 'xtype' => 'textfield', 391 | 'description' => '', 392 | 'is_required' => '0', 393 | 'sortorder' => '0', 394 | 'value' => "GET CONNECTED", 395 | 'default' => '', 396 | 'group' => $groups['socialmedia'], 397 | 'options' => '' 398 | ), 399 | array( 400 | 'key' => 'cc_facebook_icon', 401 | 'label' => 'Facebook Icon', 402 | 'xtype' => 'modx-panel-tv-image', 403 | 'description' => '', 404 | 'is_required' => '0', 405 | 'sortorder' => '1', 406 | 'value' => "assets/components/flatso/images/facebook-white-35.png", 407 | 'default' => '', 408 | 'group' => $groups['socialmedia'], 409 | 'options' => '' 410 | ), 411 | array( 412 | 'key' => 'cc_facebook_link', 413 | 'label' => 'Facebook Link', 414 | 'xtype' => 'textfield', 415 | 'description' => '', 416 | 'is_required' => '0', 417 | 'sortorder' => '2', 418 | 'value' => "https://facebook.com", 419 | 'default' => '', 420 | 'group' => $groups['socialmedia'], 421 | 'options' => '' 422 | ), 423 | array( 424 | 'key' => 'cc_twitter_icon', 425 | 'label' => 'Twitter Icon', 426 | 'xtype' => 'modx-panel-tv-image', 427 | 'description' => '', 428 | 'is_required' => '0', 429 | 'sortorder' => '3', 430 | 'value' => "assets/components/flatso/images/twitter-white-35.png", 431 | 'default' => '', 432 | 'group' => $groups['socialmedia'], 433 | 'options' => '' 434 | ), 435 | array( 436 | 'key' => 'cc_twitter_link', 437 | 'label' => 'Twitter Link', 438 | 'xtype' => 'textfield', 439 | 'description' => '', 440 | 'is_required' => '0', 441 | 'sortorder' => '4', 442 | 'value' => "https://twitter.com", 443 | 'default' => '', 444 | 'group' => $groups['socialmedia'], 445 | 'options' => '' 446 | ), 447 | array( 448 | 'key' => 'cc_rss_icon', 449 | 'label' => 'RSS Icon', 450 | 'xtype' => 'modx-panel-tv-image', 451 | 'description' => '', 452 | 'is_required' => '0', 453 | 'sortorder' => '5', 454 | 'value' => "assets/components/flatso/images/rss-white-35.png", 455 | 'default' => '', 456 | 'group' => $groups['socialmedia'], 457 | 'options' => '' 458 | ), 459 | array( 460 | 'key' => 'cc_rss_link', 461 | 'label' => 'RSS Link', 462 | 'xtype' => 'textfield', 463 | 'description' => '', 464 | 'is_required' => '0', 465 | 'sortorder' => '6', 466 | 'value' => $rssResource, 467 | 'default' => '', 468 | 'group' => $groups['socialmedia'], 469 | 'options' => '' 470 | ), 471 | 472 | ); 473 | 474 | foreach ($settings as $setting) { 475 | $settingObject = $modx->getObject('cgSetting', array('key' => $setting['key'])); 476 | if (!$settingObject) { 477 | $settingObject = $modx->newObject('cgSetting'); 478 | $settingObject->set('key', $setting['key']); 479 | $settingObject->set('label', $setting['label']); 480 | $settingObject->set('xtype', $setting['xtype']); 481 | $settingObject->set('description', $setting['description']); 482 | $settingObject->set('is_required', $setting['is_required']); 483 | $settingObject->set('sortorder', $setting['sortorder']); 484 | $settingObject->set('value', $setting['value']); 485 | $settingObject->set('default', $setting['default']); 486 | $settingObject->set('group', $setting['group']); 487 | $settingObject->set('options', $setting['options']); 488 | $settingObject->save(); 489 | } 490 | } 491 | } 492 | } 493 | 494 | switch ($options[xPDOTransport::PACKAGE_ACTION]) { 495 | case xPDOTransport::ACTION_INSTALL: 496 | 497 | if (isset($options['install_resources']) && empty($options['install_resources'])) { 498 | $rssResource = ''; 499 | $archivistIDsValue = ''; 500 | } else { 501 | $resourceMap = getResourceMap(); 502 | $rssResource = "[[~" . $resourceMap['RSS'] . "]]"; 503 | $archivistIDsValue = $resourceMap['Archives']; 504 | } 505 | 506 | createClientConfigSettings($rssResource); 507 | 508 | $themeSetting = $modx->getObject('modSystemSetting', array('key' => 'mxt.theme')); 509 | if ($themeSetting) { 510 | $themeSetting->set('value','flatso'); 511 | $themeSetting->save(); 512 | } 513 | 514 | $archivistIDs = $modx->getObject('modSystemSetting', array('key' => 'archivist.archive_ids')); 515 | if (!$archivistIDs) { 516 | $archivistIDs = $modx->newObject('modSystemSetting'); 517 | $archivistIDs->set('key', 'archivist.archive_ids'); 518 | $archivistIDs->set('namespace', 'archivist'); 519 | $archivistIDs->set('area', 'furls'); 520 | } 521 | 522 | if (!empty($archivistIDsValue)) { 523 | $archivistIDs->set('value', $archivistIDsValue . ':arc_'); 524 | } 525 | 526 | $archivistIDs->save(); 527 | 528 | if (!(isset($options['install_resources'])) || !(empty($options['install_resources']))) { 529 | $contentType = $modx->getObject('modContentType', array('name' => 'HTML')); 530 | if ($contentType) { 531 | $contentType->set('file_extensions', '/'); 532 | $contentType->save(); 533 | } 534 | } 535 | 536 | break; 537 | case xPDOTransport::ACTION_UPGRADE: 538 | 539 | $resourceMap = getResourceMap(); 540 | $rssResource = ''; 541 | 542 | if (!empty($resourceMap)) { 543 | $rssResource = "[[~" . $resourceMap['RSS'] . "]]"; 544 | } 545 | 546 | createClientConfigSettings($rssResource); 547 | 548 | break; 549 | case xPDOTransport::ACTION_UNINSTALL: 550 | break; 551 | } 552 | 553 | return true; 554 | -------------------------------------------------------------------------------- /_build/resolvers/sample_content.php: -------------------------------------------------------------------------------- 1 | xpdo) return false; 3 | /** @var modX $modx */ 4 | $modx =& $object->xpdo; 5 | 6 | switch ($options[xPDOTransport::PACKAGE_ACTION]) { 7 | case xPDOTransport::ACTION_INSTALL: 8 | if (isset($options['install_resources']) && empty($options['install_resources'])) return true; 9 | 10 | $taggerCorePath = $modx->getOption('tagger.core_path', null, $modx->getOption('core_path', null, MODX_CORE_PATH) . 'components/tagger/'); 11 | /** @var Tagger $tagger */ 12 | $tagger = $modx->getService( 13 | 'tagger', 14 | 'Tagger', 15 | $taggerCorePath . 'model/tagger/', 16 | array( 17 | 'core_path' => $taggerCorePath 18 | ) 19 | ); 20 | 21 | $template = $modx->getObject('modTemplate', array('templatename' => 'MX Template')); 22 | 23 | $group = $modx->getObject('TaggerGroup', array('alias' => 'category')); 24 | if (!$group) { 25 | $group = $modx->newObject('TaggerGroup'); 26 | $group->set('name', 'Category'); 27 | $group->set('alias', 'category'); 28 | $group->set('field_type', 'tagger-combo-tag'); 29 | $group->set('allow_new', 0); 30 | $group->set('remove_unused', 0); 31 | $group->set('allow_blank', 1); 32 | $group->set('allow_type', 0); 33 | $group->set('show_autotag', 0); 34 | $group->set('hide_input', 0); 35 | $group->set('tag_limit', 0); 36 | $group->set('show_for_templates', ''); 37 | $group->set('place', 'in-tab'); 38 | $group->set('description', ''); 39 | 40 | if ($template) { 41 | $group->set('show_for_templates', $template->id); 42 | } 43 | 44 | $group->save(); 45 | } 46 | 47 | $tags = array('Landmarks', 'Landscapes'); 48 | 49 | foreach ($tags as $tag) { 50 | $tagObject = $modx->newObject('TaggerTag'); 51 | $tagObject->set('tag', $tag); 52 | $tagObject->set('alias', strtolower($tag)); 53 | $tagObject->set('group', $group->id); 54 | $tagObject->save(); 55 | } 56 | 57 | break; 58 | case xPDOTransport::ACTION_UPGRADE: 59 | break; 60 | case xPDOTransport::ACTION_UNINSTALL: 61 | break; 62 | } 63 | 64 | return true; -------------------------------------------------------------------------------- /_build/resolvers/sample_settings.php: -------------------------------------------------------------------------------- 1 | xpdo) return false; 3 | /** @var modX $modx */ 4 | $modx =& $object->xpdo; 5 | 6 | if (!function_exists('getResourceMap')) { 7 | function getResourceMap() { 8 | global $modx; 9 | 10 | $assetsPath = rtrim($modx->getOption('flatso.assets_path',null,$modx->getOption('assets_path').'components/flatso/'), '/') . '/'; 11 | $rmf = $assetsPath . 'resourcemap.php'; 12 | 13 | if (is_readable($rmf)) { 14 | $map = include $rmf; 15 | } else { 16 | $map = array(); 17 | } 18 | 19 | return $map; 20 | } 21 | } 22 | 23 | switch ($options[xPDOTransport::PACKAGE_ACTION]) { 24 | case xPDOTransport::ACTION_INSTALL: 25 | if (isset($options['install_resources']) && empty($options['install_resources'])) return true; 26 | 27 | $resourceMap = getResourceMap(); 28 | 29 | $archive = $modx->getObject('modSystemSetting', array('key' => 'flatso.archive_id')); 30 | if ($archive && !empty($resourceMap['Archives'])) { 31 | $archive->set('value', $resourceMap['Archives']); 32 | $archive->save(); 33 | } 34 | 35 | $blog = $modx->getObject('modSystemSetting', array('key' => 'flatso.blog_id')); 36 | if ($blog && !empty($resourceMap['Home'])) { 37 | $blog->set('value', $resourceMap['Home']); 38 | $blog->save(); 39 | } 40 | 41 | $category = $modx->getObject('modSystemSetting', array('key' => 'flatso.category_id')); 42 | if ($category && !empty($resourceMap['Categories'])) { 43 | $category->set('value', $resourceMap['Categories']); 44 | $category->save(); 45 | } 46 | 47 | $fPosts = $modx->getObject('modSystemSetting', array('key' => 'mxt.default_fposts')); 48 | if ($fPosts && !empty($resourceMap['Coastal Beach House']) && !empty($resourceMap['Surf City'])) { 49 | $fPosts->set('value', $resourceMap['Coastal Beach House'] . ',' . $resourceMap['Surf City']); 50 | $fPosts->save(); 51 | } 52 | 53 | if (!empty($resourceMap['Home'])) { 54 | /** @var modResource $homeResource */ 55 | $homeResource = $modx->getObject('modResource', $resourceMap['Home']); 56 | if ($homeResource) { 57 | $homeResource->setTVValue('fpost_ids', $resourceMap['Coastal Beach House'] . ',' . $resourceMap['Surf City']); 58 | } 59 | } 60 | 61 | break; 62 | case xPDOTransport::ACTION_UPGRADE: 63 | break; 64 | case xPDOTransport::ACTION_UNINSTALL: 65 | break; 66 | } 67 | 68 | return true; -------------------------------------------------------------------------------- /_build/setup.options.php: -------------------------------------------------------------------------------- 1 | friendly_urls. 4 |This theme has no button sets
85 | 86 |Large Fullscreen background image.
80 |Available on "Page" and "Listing" Content Types.
83 |Turn on the Hero by checking Show Banner Image and uploading an image to Page Image
84 |
88 | Visible on the home page
89 |
90 | Standard Input with label
80 |
96 | <div class="input-wrapper">
97 | <label for="text">Input Label:</label>
98 | <input name="text" type="text" placeholder="Text Input Values">
99 | </div>
100 |
101 | Standard Radio with label
111 |
124 | <div class="input-wrapper">
125 | <label for="radio">Radio Label:</label>
126 | <input name="radio" type="radio"> Radio Value
127 | </div>
128 |
129 | Standard Checkbox with label
138 |
151 | <div class="input-wrapper">
152 | <label for="checkbox">Checkbox Label:</label>
153 | <input name="checkbox" type="checkbox"> Checkbox Value
154 | </div>
155 |
156 | Standard Textarea with label
166 |
179 | <div class="input-wrapper">
180 | <label for="text">Input Label:</label>
181 | <textarea name="text">Text input values</textarea>
182 | </div>
183 |
184 | Standard Select with label
194 |
211 | <div class="input-wrapper">
212 | <label for="select">Select Label:</label>
213 | <select name="select">
214 | <option value="1">Option 1</option>
215 | </select>
216 | </div>
217 |
218 | Standard Button
228 |
240 | <div class="input-wrapper">
241 | <button type="submit">SUBMIT</button>
242 | </div>
243 |
244 | Large Fullscreen background image.
80 |Available on "Listing" Content Types with a "Sidebar".
83 |Enter a comma separated string of resources
84 |
85 |
86 |
91 | Visible on the home page
92 |
93 | Display full cover ads on blog posts.
80 |Available on Every Resource.
83 |The Flatso snapshot comes bundled with this Extra. Giant Ads
84 |
92 | Visible on surf city - http://flatso.clients.modxcloud.com/surf-city/
93 |
94 | #6e9924
80 |#444444
90 |#aaa
100 |Full page listings with pagination.
80 |Available on "Listing" Content Types.
83 |Listings control the Blog Parent, Categories, and Archives
84 |Listings contain the Sidebar by default.
85 |
89 | Visible on the home page
90 |
91 | Standard UL when used in a "Page Body"
80 |Standard OL when used in a "Page Body"
118 |The "nav_tab_support" chunk is a small dependency free JS function that we are building with the a11y manager to help support dropdown menu navigation by hitting tab.
80 |Available on Every Resource.
83 |Small JS File in the Footer.
84 |It can be removed without worry from the mxt.listing_end_flatso and mxt.page_end_flatso85 |
89 |
90 |
91 | Top Level Navigation.
80 |Available on Every Resource.
83 |Automatically built according to tree order.
84 |
88 |
89 |
90 | With Responsive reorganization built-in
81 |Table Header 1 | 88 |Table Header 2 | 89 |Table Header 3 | 90 |
---|---|---|
Division 1 | 95 |Division 2 | 96 |Division 3 | 97 |
Division 1 | 100 |Division 2 | 101 |Division 3 | 102 |
Division 1 | 105 |Division 2 | 106 |Division 3 | 107 |
115 | <table cellspacing="0" cellpadding="0">
116 | <thead>
117 | <tr>
118 | <th>Table Header 1</th>
119 | <th>Table Header 2</th>
120 | <th>Table Header 3</th>
121 | </tr>
122 | </thead>
123 | <tbody>
124 | <tr>
125 | <td data-label="Header 1">Division 1</td>
126 | <td data-label="Header 2">Division 2</td>
127 | <td data-label="Header 3">Division 3</td>
128 | </tr>
129 | </tbody>
130 | </table>
131 |
132 | <h5>
<h6>
are identical in styling to discourage excessive levels of hierarchy.
93 | <h1>Heading 1</h1>
94 | <h2>Heading 2</h2>
95 | <h3>Heading 3</h3>
96 | <h4>Heading 4</h4>
97 | <h5>Heading 5</h5>
98 | <h6>Heading 6</h6>
99 |
100 | 109 | Standard paragraph with link. 110 |
111 |Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.
114 |
118 | <p>content</p>
119 |
120 | 129 | Standard small text 130 |
131 |
138 | <small>content</small>
139 |
140 | 149 | Standard blockquote. 150 |
151 |Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.154 |
158 | <blockquote>content</blockquote>
159 |
160 | [[+publishedon:strtotime:date=`%B %e, %Y`]]
5 | 6 |[[+introtext]]
11 | 12 |