Compare commits

...

127 Commits

Author SHA1 Message Date
Daniel Stolt
82585c484e Changed gulpfile to invoke autoprefixer directly instead of through cssnano. Fixes #7467. 2016-12-08 19:30:15 +01:00
Daniel Stolt
76944a0956 Merge remote-tracking branch 'origin/1.10.x' into dev 2016-12-06 16:00:41 +01:00
Lombiq
5d835ab8a3 Adding ability to remove draft and adding grouping to SummaryAdmin content menu, see #2661 and #2662
These two issues are tightly connected so better to address them at once.
2016-12-04 23:37:02 +01:00
MarcoViglione-Laser
6f3193e52b [Fixes ##7430] Added support for culture neutral patterns (#7449)
Fixes ##7430
2016-12-02 08:07:43 -08:00
LorenzoFrediani-Laser
a7f51c13d4 [Fixes #7404] Users own media folder name provider (#7454)
Fixes #7404
2016-12-01 13:14:52 -08:00
Hermes Sbicego
46c3fe6e79 [Fixes #6196] Added attachments logic (#7338)
Fixes #6196
2016-12-01 13:09:48 -08:00
bedegaming-aleksej
4b2e1ca19d [Fixes #7441] Adapt export steps flag to work with refactored steps (#7442)
Fixes #7441
2016-12-01 13:08:06 -08:00
Hermes Sbicego
8a328902fd ProjectionManager Extension (#7417)
- Defined a new interface IProjectionManagerExtension that inherits from IProjectionManager
- ProjectionManager now implements IProjectionManagerExtension, so we can pass a part to GetCount and GetContentItems
- GetCount and GetContentItems transform the part into a Content token, so you can filter data with informations contained in the Projection itself
2016-12-01 13:00:13 -08:00
ViRuSTriNiTy
83f47ac148 [Fixes #7446] Orchard.Users - Allow umlauts in UserPart.EmailPattern (#7447)
Fixes #7446
2016-12-01 12:50:45 -08:00
GiuseppeMusso-Laser
750824b197 [Fixes #7443] Jobs Queue menu item visibility for site owners only. (#7444)
Fixes #7443
2016-12-01 12:43:52 -08:00
GiuseppeMusso-Laser
7045c40406 [Fixes #7436] Added a using of System.Linq in CSharp scripting. (#7437)
Fixes #7436
2016-12-01 12:35:01 -08:00
Lombiq
72062399ed Merge branch '1.10.x' into dev
# Conflicts:
#	src/Orchard.Web/Modules/Orchard.DynamicForms/Drivers/HiddenFieldElementDriver.cs
#	src/Orchard.Web/Modules/Orchard.DynamicForms/Drivers/TextFieldElementDriver.cs
#	src/Orchard/ContentManagement/IHqlCriterion.cs
2016-11-24 23:47:27 +01:00
Lombiq
eed3ee6871 Adding the ability to enable HTTP Strict Transport Security from the SSL module, fixes #6612 2016-11-24 23:38:20 +01:00
Matt Varblow
80cc4295ed Rename ModelStateDistionaryExtensions.cs to ModelStateDictionaryExtensions.cs (#7415)
* Rename ModelStateDistionaryExtensions.cs to ModelStateDictionaryExtensions.cs

Fixed spelling in file name

* Update Orchard.Users.csproj

Fixed misspelling.
2016-11-22 18:50:23 -08:00
GiuseppeMusso-Laser
e6d4d0c9d4 Fix DateTime parsed in ISO 8601 format. (#7433)
Fixes #7432
2016-11-22 18:41:40 -08:00
Matteo Piovanelli
0ea47a5554 Fixed the tenant name validation (#7429) 2016-11-22 18:39:40 -08:00
Szel
4708cfc8b2 Fix link to dotnetfoundation (#7434) 2016-11-22 18:39:07 -08:00
Szymon Seliga
d8f423888a [Fixes #7378] Fixed tenant name validation regex, not to allow numbers. (#7399)
[Fixes #7378]
2016-11-18 10:25:31 -08:00
Hermes Sbicego
4299239482 Implements what described in #6688 (#7356)
Fixes #6688
2016-11-17 13:02:54 -08:00
Tha'er M. Al-Ajlouni
9d71a627da Bug reading SiteSettings from the Routes class (#7363)
Fixes #7362
2016-11-17 13:01:16 -08:00
Hannan Azam Khan
7e859f2ccf Default Tag Cache from HttpContext (#7280)
Fixes #7240
2016-11-17 12:54:04 -08:00
Matteo Piovanelli
4584da9214 Content picker localization culture dropdown (#7388) 2016-11-17 12:49:35 -08:00
Matteo Piovanelli
f697fbb06a Implements ContentPicker localization options discussed in #7352 (#7391)
* Squashed commit of the following:

commit bd1e2bf3d386a1d6f12a5d062639929a17ba6c46
Author: matteo.piovanelli <matteo.piovanelli@laser-group.com>
Date:   Thu Nov 10 12:02:09 2016 +0100

    Added notifications about what the localization methods for ContentPickerField will do or have done.

commit 04eb7074dcfef2c8beb65f0322821dc654902cfb
Author: matteo.piovanelli <matteo.piovanelli@laser-group.com>
Date:   Wed Nov 9 17:48:59 2016 +0100

    Added the TryTranslate option and its suboptions

commit fad9fa87f3f3a8c555d088e8971dd04a337cf4dc
Author: matteo.piovanelli <matteo.piovanelli@laser-group.com>
Date:   Wed Nov 9 15:31:44 2016 +0100

    Added a new feature to the ContentPicker module.
    So far, it stops saving/publication when the items in the ContentPickerField are the "wrong" culture

commit b90629dc3e
Merge: 578b21b c486355
Author: matteo.piovanelli <matteo.piovanelli@laser-group.com>
Date:   Tue Nov 8 09:37:30 2016 +0100

    Merge remote-tracking branch 'remotes/OrchardCMS.Orchard/1.10.x' into Laser/1.10.x

commit 578b21b75e
Merge: 395976f 3c53ffb
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Fri Nov 4 13:45:51 2016 +0100

    Merge branch 'feature/6688_RequestTokens_Chaintext' into Laser/1.10.x

commit 3c53ffb09a
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Fri Nov 4 13:43:38 2016 +0100

    - replaced Regex.Replace with String.Trim(char[]) as suggested
    - ran Orchard.Tokens.Tests: 66/66 passed

commit 395976fa60
Merge: 708ed79 a15557e
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Fri Oct 28 16:34:50 2016 +0200

    Merge branch 'Laser/1.10.x' of https://github.com/LaserSrl/Orchard into Laser/1.10.x

commit 708ed79ccb
Merge: 5fe0b69 68acf26
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Fri Oct 28 16:32:52 2016 +0200

    Merge branch '1.10.x' of https://github.com/LaserSrl/Orchard into Laser/1.10.x

commit 5fe0b69c6b
Merge: 0daad70 e3a7059
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Fri Oct 28 16:32:31 2016 +0200

    Merge branch 'feature/6196_SupportForAttachments' into Laser/1.10.x

commit e3a7059edf
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Fri Oct 28 15:22:48 2016 +0200

    - Addition of an existing png (OrchardLogo.png) as attachment within "Test Smtp Settings" Section, in order to demonstrate functionality of support for attachments in email

commit f095dea5e5
Merge: 7b09747 68acf26
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Fri Oct 28 12:37:55 2016 +0200

    Merge remote-tracking branch 'remotes/OrchardCMS.Orchard/1.10.x' into feature/6688_RequestTokens_Chaintext

commit a15557e5f3
Merge: 0daad70 ce8a61e
Author: matteo.piovanelli <matteo.piovanelli@laser-group.com>
Date:   Thu Oct 27 17:10:53 2016 +0200

    Merge branch 'issues/7346_WidgetsViewQueryString' into Laser/1.10.x

commit 0daad70219
Merge: 927d18b 7b09747
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Thu Oct 27 09:07:58 2016 +0200

    Merge remote-tracking branch 'remotes/Laser.Orchard/feature/6688_RequestTokens_Chaintext' into 1.10.x

commit 7b09747fc9
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Thu Oct 27 09:05:17 2016 +0200

    inserted a better explanation on how to use the chains

commit 927d18b1c2
Merge: f8cbc63 17ebdd2
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Wed Oct 26 19:00:44 2016 +0200

    Merge remote-tracking branch 'remotes/Laser.Orchard/feature/6688_RequestTokens_Chaintext' into 1.10.x

commit 17ebdd2bfc
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Wed Oct 26 18:57:48 2016 +0200

    - typo

commit f8cbc63fc0
Merge: 9f42664 1b511b2
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Wed Oct 26 18:53:11 2016 +0200

    Merge branch 'feature/6688_RequestTokens_Chaintext' into 1.10.x

commit 1b511b2692
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Wed Oct 26 18:50:35 2016 +0200

    - Implement what described in #6688

    Supported Syntaxes for Request and Form tokens are:
    1. QueryString:(param1) or Form:(param1)
    2. QueryString:param1 or Form:param1
    3. QueryString:(param1).SomeOtherTextToken or Form:(param1).SomeOtherTextToken

    If you want to Chain TextTokens you have to use the 3rd syntax
    the element (here param1) has been surrounded with brackets in order to preserve backward compatibility.

commit ce8a61ed86
Author: matteo.piovanelli <matteo.piovanelli@laser-group.com>
Date:   Wed Oct 26 11:46:24 2016 +0200

    Fixes #7346

commit 9f4266401a
Merge: 60aa1cc f6cfe32
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Tue Oct 25 09:20:57 2016 +0200

    Merge branch '1.10.x' of https://github.com/LaserSrl/Orchard into 1.10.x

commit 60aa1cc2f4
Merge: c1b1c4d 7a16cf5
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Tue Oct 25 09:20:28 2016 +0200

    Merge branch '1.10.x' of https://github.com/OrchardCMS/Orchard into 1.10.x

commit c1b1c4dc06
Merge: bf2201c e50bd60
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Tue Oct 25 09:19:54 2016 +0200

    Merge remote-tracking branch 'remotes/Laser.Orchard/feature/6196_SupportForAttachments' into 1.10.x

commit e50bd607b7
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Tue Oct 25 09:18:24 2016 +0200

    - Formatted Code (Rebracer)

commit f6cfe324b1
Merge: 7a16cf5 bf2201c
Author: matteo.piovanelli <matteo.piovanelli@laser-group.com>
Date:   Mon Oct 24 09:24:57 2016 +0200

    Merge remote-tracking branch 'remotes/Laser.Orchard/1.10.x' into 1.10.x
    Ho fatto pull della 1.10 remota di Orchard

commit bf2201c2a9
Merge: 67af300 580b79c
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Fri Oct 21 18:40:21 2016 +0200

    Merge branch 'feature/6196_SupportForAttachments' into 1.10.x

    # Conflicts:
    #	src/Orchard.Web/Modules/Orchard.Email/Services/SmtpMessageChannel.cs

commit 580b79c24d
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Fri Oct 21 11:46:08 2016 +0200

    - Added attachments logic

commit 67af300783
Merge: d4d4a32 a4c816b
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Fri Oct 21 11:56:13 2016 +0200

    Merge branch 'feature/6196_SupportForAttachments' into 1.10.x

commit a4c816b291
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Fri Oct 21 11:55:38 2016 +0200

    - missing Attachments Key fix

commit d4d4a322bc
Merge: 297e586 2bb81ee
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Fri Oct 21 11:46:40 2016 +0200

    Merge branch 'feature/6196_SupportForAttachments' into 1.10.x

commit 2bb81eef31
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Fri Oct 21 11:46:08 2016 +0200

    - Added attachments logic

commit 297e586a19
Merge: 54a1bdf 548b5d7
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Fri Oct 21 09:39:11 2016 +0200

    Merge branch 'feature/5790_partecipate_in_cache_key_generation' into 1.10.x

commit 548b5d7d8f
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Fri Oct 21 09:37:07 2016 +0200

    - Method renamed
    - try catch removed

commit 54a1bdf03a
Merge: b7ee130 794b9b0
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Wed Oct 19 17:51:29 2016 +0200

    Merge remote-tracking branch 'remotes/Laser.Orchard/feature/5790_partecipate_in_cache_key_generation' into 1.10.x

commit 794b9b0252
Merge: 1dcee8a 350cbbd
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Wed Oct 19 17:44:35 2016 +0200

    Merge branch 'feature/5790_partecipate_in_cache_key_generation' of https://github.com/LaserSrl/Orchard into feature/5790_partecipate_in_cache_key_generation

commit 1dcee8aae8
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Wed Oct 19 16:30:12 2016 +0200

    - typo chaching > caching

    - added EventHandler in order to partecipate in cachekey generation

commit 350cbbd183
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Wed Oct 19 17:40:58 2016 +0200

    - typo chaching > caching

commit b7ee130847
Merge: c9e14f9 58e59e2
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Wed Oct 19 16:32:13 2016 +0200

    Merge remote-tracking branch 'remotes/Laser.Orchard/feature/5790_partecipate_in_cache_key_generation' into 1.10.x

commit 58e59e2fca
Author: HermesSbicego-Laser <hermes.sbicego@laser-group.com>
Date:   Wed Oct 19 16:30:12 2016 +0200

    - added EventHandler in order to partecipate in cachekey generation

commit c9e14f9b82
Author: matteo.piovanelli <matteo.piovanelli@laser-group.com>
Date:   Mon Oct 17 12:54:53 2016 +0200

    Modified the OutputCache Module based on the enhancement proposed in Issue 5811,
    by adding a VaryByRequestCookies property to the CacheSettingsPart to enable the generation of the Cache Key based on cookies

* Changed the view as reccomended by @sebastienros in his comments

* Added culture information to the contentpickerfield editor view

* Fixed a bug in the handler (!= instead of ==)

* showing displaytext in warnings and notifications rather than content item's id

* Cleanup. I
ContentPickerFieldLocalizationDriver Editor methods are executed correctly on validation errors, so they load the additional javascript correctly
2016-11-17 12:47:58 -08:00
Thierry Fleury
1254a11b8d Sort Taxonomies Terms failed
Fixes #6795
2016-11-17 12:47:15 -08:00
hacko-bede
203fd95079 Delete scheduled task when content is published
Fixes #6840
2016-11-17 12:37:55 -08:00
Thierry Fleury
fb7ba4d392 Using Invoke helper in Clone() (#7400) 2016-11-16 08:09:35 -08:00
Marek Dzikiewicz
fab73d7157 LocalizationStreamParser should not fail on faulty PO files
Closes #7387
2016-11-14 10:56:47 -08:00
Rob King
69eb505e2a Changed Audit Trail trimming task to delete all records in one batch, rather than iterating through the table records (#7361) 2016-11-10 13:20:24 -08:00
Lombiq
c48635540b Adding import/export for the RenderingMode property of ShapePart 2016-11-07 22:24:43 +01:00
Lombiq
8f2411dbf9 Adding the ability to select whether a Template (content item) will be rendered on the frontend, admin, or both. Fixes #5579. 2016-11-07 21:41:43 +01:00
Another Developer
68acf2694d Fix Event Bus for null exception (#7360)
EventsInterceptor fails when it tries to locate a generic method on an implementation with a return type. A null check has been added to avoid the exception.

Fixes #4718 
Dixes #4584
2016-10-27 14:56:27 -07:00
jtkech
b160dc731d Allow the initial value of some fields to be tokenized (#6613)
Fixes #6613 
Fixes #6237
2016-10-27 13:15:47 -07:00
Hermes Sbicego
b931b79115 [Feature #5790] Adding cache key generation extensibility (#7334) 2016-10-27 13:11:50 -07:00
jtkech
d59f5b511b Update Module.txt (#6945) 2016-10-27 13:09:34 -07:00
Matteo Piovanelli
85326ead8c [Fixes #7346] Allowing cultures and layers to be selected in Widgets
Fixes #7346
2016-10-27 12:40:14 -07:00
Matthew Harris
d91aa41be3 [Fixes #7339] Orchard.Widgets - Refactor #7251 (#7342)
Fixes #7339
2016-10-27 12:24:30 -07:00
Lombiq
ae1aaff146 Fixing that DateTime.MinValue as default value for LastPasswordChangeUtc causes exception during setup 2016-10-27 00:38:20 +02:00
Lombiq
e975d2083d Fixing that for existing users LastPasswordChangeUtc being null caused errors 2016-10-25 22:41:01 +02:00
Lombiq
f6a929f457 Adding missing import/export for UserPart.LastPasswordChangeUtc 2016-10-25 22:40:09 +02:00
Daniel Stolt
e2b6002a6f Fixed wording of "vary by cookies" option in admin UI. 2016-10-25 00:28:17 +02:00
Matthew Harris
f51c8a7278 Merge remote-tracking branch 'OrchardCMS/1.10.x' into dev 2016-10-22 11:16:16 +01:00
Matthew Harris
7a16cf527c [Fixes #7258] Orchard.Core - Tabbed groupby breaks priority (#7336)
Fixes #7258
2016-10-21 14:58:28 +01:00
Matthew Harris
fef68ad7ae Orchard.Roles GetRoles should defer execution (#7320)
Fixes #7278
2016-10-20 12:33:55 -07:00
Matthew Harris
f37225dedd [Fixes #7258] Orchard.Core - Tabbed groupby breaks priority (#7321)
Fixes #7258
2016-10-20 12:33:20 -07:00
Matthew Harris
4a5ed9790a [Fixes #7251, Fixes #1659] Orchard.Setup - Blog recipe doesn't create widgets correctly (#7324)
Fixes #7251, Fixes #1659
2016-10-20 12:30:47 -07:00
Matthew Harris
9be38010b0 [Fixes #7071] Orchard.Users - Users last login time is not correct (#7325)
Fixes #7071
2016-10-20 12:26:23 -07:00
Matthew Harris
30312ad6b0 [Fixes #7326] Orchard.Widgets - Fix typo in logger (#7327) 2016-10-20 12:25:33 -07:00
MatteoPiovanelli-Laser
429889b36e [Fixes #5811] Adding a VaryByRequestCookies property to the CacheSettingsPart
Fixes #5811
2016-10-20 12:24:47 -07:00
Sebastien Ros
5c430ef7d1 Merge branch 'refs/heads/1.10.x' into dev
# Conflicts:
#	src/Orchard/Data/Migration/AutomaticDataMigrations.cs
2016-10-17 14:40:54 -07:00
Sebastien Ros
59a9f0bf03 Fixing SQL exception during automatic migrations in PostgreSql
Fixes #6783
Fixes #7323
2016-10-17 14:34:37 -07:00
Matthew Harris
bd222908d6 [Fixes #7318] Orchard.DesignerTools - Setting Id not needed anymore (#7319)
Fixes #7318
2016-10-13 21:59:41 +01:00
Matthew Harris
ca9fb77d8a Merge branch '1.10.x' into dev
# Conflicts:
#	src/Orchard.Web/Modules/Orchard.DesignerTools/Orchard.DesignerTools.csproj
2016-10-13 21:23:16 +01:00
Matthew Harris
7c95b53807 [Fixes #7155] Orchard.Framework - GroupInfo generates routes with spaces (#7275)
Fixes #7155
2016-10-13 12:32:21 -07:00
Hannan Azam Khan
794f30af39 [Fixes 6759] Replace Media Item: Replacing an Image/OEmbed with new one (#7160)
Fixes #6759
2016-10-13 12:31:49 -07:00
Hannan Azam Khan
210aebcbe9 [Fixes #7255] Cached items are not evicted on Remove and Destroy (#7281)
Fixes #7255
2016-10-13 12:27:41 -07:00
Matthew Harris
5cc0acae44 [Fixes #7299] Update defaults for rebracer.xml (#7300)
Fixes #7299
2016-10-13 12:20:36 -07:00
Matthew Harris
7ec1765258 [Fixes #7294] Orchard.Core - Improve wording of Notifier in Content Management admin (#7298)
Fixes #7294
2016-10-13 12:19:58 -07:00
Matthew Harris
8a80daa9b7 [Fixes #6494] SSL missing settings banner showing on frontend (#7302)
Fixes #6494
2016-10-13 12:16:33 -07:00
Matthew Harris
99b0fd6ca7 [Fixes #5960] LinkEntry needs Sizes Attribute (#7303)
Fixes #5960
2016-10-13 12:15:13 -07:00
Sergio Navarro
b8bd587a9f [Fixes #6704] Regular Expression for Validating TextField Element (#6705)
Fixes #6704
2016-10-13 12:10:57 -07:00
Sipke Schoorstra
03d5a375d3 Fixed an issue with layout element lookup. (#7305)
Fixes #7304
2016-10-13 12:09:19 -07:00
Matthew Harris
3e275f3f22 [Fixes #4723] Orchard.Core.Contents - Verify type exists on create content
Fixes #4723, #6769
2016-10-13 12:06:10 -07:00
Matthew Harris
951c36a59b Orchard.MultiTenancy - Mismatched ConnectionString UI between add/edit
Fixes #7301
2016-10-13 12:16:24 -04:00
Vinícius Fernandes
13979fd1da Fixed an issue with incorrect log message at Indexing module
* Fixed incorrect log message in Indexing module
* Fixed an issue with incorrect log message at Indexing module
* Fixed identation

Fixes #7225
2016-10-13 12:13:29 -04:00
Matthew Harris
cf81574552 Blog Recent Posts, Archives, Tag Cloud "no data" msgs
Fixes #7168, Fixes #7169, Fixes #7170
2016-10-09 07:19:46 -04:00
Matthew Harris
0ae205c987 feature - add front end toggling of shape tracing
Fixes #7162
2016-10-09 00:23:47 +01:00
Sebastien Ros
3672c96951 Merge branch '1.10.x' into dev 2016-10-06 13:16:03 -07:00
ViRuSTriNiTy
2a8d091e07 [Fixes 7246] Added null checks for version ids
Fixes #7246
2016-10-06 12:41:45 -07:00
Matthew Harris
b9c30fedb8 Orchard.Blogs - Hide Parts_Common_Metadata on blog
Fixes #7171
2016-10-05 12:31:08 +02:00
Matthew Harris
7171244044 Add Orchard.Tags.TagsCloud "no data" message
Fixes #7170
2016-10-05 12:26:36 +02:00
Sipke Schoorstra
a9e551ec3a Merge branch '1.10.x' into dev
# Conflicts:
#	src/Orchard.Web/Modules/Orchard.DynamicForms/Drivers/HiddenFieldElementDriver.cs
#	src/Orchard.Web/Modules/Orchard.Fields/Drivers/LinkFieldDriver.cs
#	src/Orchard.Web/Modules/Orchard.Fields/Drivers/NumericFieldDriver.cs
#	src/Orchard.Web/Modules/Orchard.MediaLibrary/Drivers/MediaLibraryPickerFieldDriver.cs
2016-10-04 10:35:32 +02:00
Matthew Harris
004f35900d line wrap css and bind title attr
Fixes #7208
2016-10-01 17:57:24 +02:00
Matthew Harris
bd195cbb04 [Fixes #7192] Orchard.Tags - Manage Tags Admin Page Not Alpha Sorted (#7198) 2016-10-01 17:14:36 +02:00
Matthew Harris
37e8696fe0 [Fixes #7131] Orchard.ContentTypes - Add / Edit Field Issues (#7150) 2016-09-29 12:58:04 -07:00
Matthew Harris
ed94ba11e7 Customize blog recipe (#7166)
Fixes #7115
2016-09-29 12:49:21 -07:00
Matthew Harris
a46b86b243 Fixes #7120 Hidden Field in Dynamic Forms causes crash (#7123)
Fixes #7120 - If a Hidden Field is added to a DynamicForm without a Value set then it will crash the front end because of a null value.
2016-09-29 12:48:22 -07:00
Sipke Schoorstra
ec0a0998da Wrapped owin middleware config (#7161)
This wraps owin middle ware configuration within a work context scope.

Fixes #6991
2016-09-29 12:34:50 -07:00
Matthew Harris
e5e84c0e1b Fields display as "&amp;" instead of "&" in validation error msgs (#7156)
Fixes #7111
2016-09-29 12:18:39 -07:00
Matthew Harris
8ddfb0ed73 [Fixes #7151] Orchard.Core - Use CDN setting ui not correct (#7152)
[Fixes #7151] Orchard.Core - Use CDN setting ui not correct
2016-09-29 12:03:49 -07:00
Sipke Schoorstra
8218535d27 Added CodeRush for Roslyn settings folder to .gitignore. 2016-09-28 16:10:46 +02:00
Matthew Harris
a7c4dfbf7c [Fixes #7153] Typo .buton:active in several css files (#7154)
* [Fixes #7153] Typo .buton:active in several css files

[Fixes #7153] Typo .buton:active in several css files

* [Fixes #7153] Typo .buton:active in several css files

[Fixes #7153] Typo .buton:active in several css files

* [Fixes #7153] Typo .buton:active in several css files

[Fixes #7153] Typo .buton:active in several css files

* [Fixes #7153] Typo .buton:active in several css files

[Fixes #7153] Typo .buton:active in several css files
2016-09-24 22:30:55 +02:00
Sipke Schoorstra
bc74aec232 Fixed ContentFieldHarvester when NULL Content
The content field harvester throws an error when the LayoutEditor is rendered without having a content item as the context (BluePrints, for example). The previous code would fall back to simply enumerating all fields of all parts to make available all content fields as elements. However, the content field elements can't render these fields without having a proper content item as context, so it would fail with an exception.

There are scenarios where one might still want to be able to add content field elements on the canvas even when there is no current content item (to create template layouts for example). But to support this, we need to figure out what we want to render if we can;t actually render the content field at design time. Perhaps a simplified representation would suffice in this scenario. To be discussed. Removing the broken feature for now.
2016-09-24 11:45:19 +02:00
Matthew Harris
de0a173916 [Fixes #7132] Orchard.Fields - Inconsistent use of mandatory / required (#7134)
* [Fixes #5708] Orchard.Fields - Inconsistent use of mandatory / required

* finish off updating messages + tests

* fix broken test
2016-09-22 13:14:44 -07:00
Peter Davis
0082d55914 Allow custom date format when displaying published state
Wen overriding the Parts.Common.Metadata.cshtml in a theme, this will allow for changing the date format used to display the date.
2016-09-22 13:14:33 -07:00
Matthew Harris
84a95e3cb9 [Fixes #7125] tokenized css class left behind (#7127) 2016-09-22 13:03:46 -07:00
Matthew Harris
50224d5ebe [Fixes #7129] Boolean.cshtml doesn't have * required support in view (#7133) 2016-09-22 12:48:21 -07:00
Matthew Harris
357f1aa166 Fix incorrect title on edit page
Fixes #7142
2016-09-22 12:18:21 -07:00
Matthew Harris
6c6d2972fe Fix incorrect title on edit page
Fixes #7142
2016-09-22 12:17:42 -07:00
Sebastien Ros
a6645abc8f Merge branch '1.10.x' into dev
# Conflicts:
#	src/Gulpfile.js
#	src/Orchard.Web/Modules/Orchard.Azure/Services/Caching/Output/AzureOutputCacheStorageProvider.cs
2016-09-22 12:15:32 -07:00
Matthew Harris
27d5c6658a Labels hidden when datetime field added (#7146)
Fixes #7144
2016-09-22 12:13:26 -07:00
Matthew Harris
68c485206d Labels hidden when datetime field added (#7146)
Fixes #7144
2016-09-22 12:12:36 -07:00
Daniel Stenson
8ec6e8a724 Preserve returnUrl value in Content-User.Edit.cshtml
Fixes #7141 #3447
2016-09-22 12:07:23 -07:00
Matthew Harris
e3c0c97b66 [Fixes #7121] Fix incorrect documentation url 2016-09-15 12:07:53 -07:00
Matthew Harris
be31746c4e [Fixes #7119] Path Comparison Case Sensitivity 2016-09-15 12:07:09 -07:00
Matthew Harris
0cac0ac601 [Fixes #7104] - Widget Element Title Encoding Fix 2016-09-02 09:21:21 -07:00
Hannan Azam Khan
6720b71cf3 [Fixes #7043] Displaying Multiple Editors from a Custom Part 2016-09-01 12:34:26 -07:00
Mohammad Dameer
01fa02bd90 [Fixes #6812] Add shape attributes to "CreateElementTagBuilder" 2016-08-25 12:49:13 -07:00
jtkech
94ddb257e1 Pass the right display type to the widget element. (#7074) 2016-08-25 12:47:21 -07:00
judgestone
1c1e9e4c97 Allowing adding classes through ShapeTableBuilder.Describe
Small change to Content.Summary.cshtml to allow module developers to add classes to Content.Summary.cshtml via ShapeTableBuilder.Describe.

Fixes #7089
2016-08-19 09:39:00 -07:00
adrian booth
84288aeff6 fix typo of occured for logging messages and notification (#7083) 2016-08-15 14:25:41 +02:00
Pablo Sanchez
0deab6bd0d Sanitize username in activity 2016-08-04 12:58:41 -07:00
mrestuccia
25f3298e0c Fixing typos.
Fixes #6902
2016-08-04 12:40:28 -07:00
ViRuSTriNiTy
6f4c12a8a1 Admin, content list, fixed lowercase display and CSS class of bulk labels 2016-08-04 12:31:46 -07:00
Another Developer
51d79955a1 Identity support to menu create command switch 2016-08-04 12:20:13 -07:00
ViRuSTriNiTy
e94738ce34 Use ISO 8601 format for date times
Fixes #6973
2016-08-04 12:17:12 -07:00
Lombiq
4c1254e128 Fixing that the debug log was created even in Release mode 2016-08-01 00:30:40 +02:00
Zoltán Lehóczky
d32847bee1 Implementing configurable password policies (#7051)
* Implementing configurable password policies, see #5380.

Policies include:
- Minimum password length
- Password should contain uppercase and/or lowercase characters
- Password should contain numbers
- Password should contain special characters

* Adding missing IMembershipSettings and removing now unneeded MembershipSettings

* Removing hard-coded password length limits

* Removing unnecessary checks when building the model state dictionary

* Simplifying password length policy configuration by removing explicit enable option
2016-07-28 21:59:13 +02:00
Antoine Griffard
c016a03b40 Feature-roadmap : url is case sensitive 2016-07-28 10:27:53 +02:00
Lombiq
26129a7e77 Fixing build error due to missing using declaration in LocalizedRangeAttribute 2016-07-22 21:49:47 +02:00
jtkech
8cd1778a80 [Fixes #6783] Workaround for PostgreSQL without breaking SQL server 2016-07-21 12:48:49 -07:00
Pablo Sanchez
dcc63228e5 [Fixes #7003] Fixing NRE 2016-07-21 12:31:40 -07:00
Hazzamanic
89a84cd00f Update form name in validation of decision activity 2016-07-21 12:30:17 -07:00
Hazzamanic
9110e93fca [Fixes #7024] Added null check for the shape returned by a field driver 2016-07-21 12:20:07 -07:00
Tomasz Malinowski
4df4e6fd12 [Fixes #7026] Fixing localized attributes culture 2016-07-21 12:18:51 -07:00
Carl Woodhouse
35c379191e [Fixes #7034] Don't cache pages when status code is changed in the view
* Fixed the output caching of non 200 responses when errors are thrown in views

* Added debug message to output cache when the response isn't cached due to a non 200 status code.
2016-07-21 12:17:33 -07:00
Another Developer
dcdb47e543 Adding Identity part to the ShapeMenuItem 2016-07-21 12:08:30 -07:00
Lombiq
dbbeb175a6 Readme: Simplifying the "Project Status" section 2016-07-12 21:42:17 +02:00
Lombiq
a5b1aa5d2a Fixing that with multiple TinyMCE editors on a page multiple toolbars also appeared, see #7022 2016-07-12 18:08:02 +02:00
Daniel Stolt
1166163623 Merge remote-tracking branch 'origin/dev' into dev 2016-07-03 13:08:32 +02:00
Daniel Stolt
8ff3ec0ee2 Fixed bug with missing source maps in SASS transpilation. 2016-07-03 12:59:52 +02:00
Daniel Stolt
e04b12d177 Removed incorrect comments in Gulpfile.js. 2016-07-03 12:52:48 +02:00
Lombiq
e01e1ada2d Merge branch '1.10.x' into dev
Conflicts:
	README.md
2016-06-29 22:59:52 +02:00
Lombiq
74011e659b README: updating 1.10.1 release description 2016-06-29 22:57:47 +02:00
Lombiq
7aa6371ec1 README: updating released versions, adding links to releases, fixing Azure deploy link 2016-06-29 22:44:07 +02:00
Lombiq
c004545eeb Updating README from the dev branch 2016-06-29 22:36:08 +02:00
Lombiq
31f07a44e4 The TinyMce toolbar is now always visible in the editor, even if scrolled down, fixes #5769 2016-06-28 23:48:50 +02:00
Lombiq
13f3473868 Some grammar fixes (I hope) in NavigationAliasProvider 2016-06-28 17:03:04 +02:00
344 changed files with 4075 additions and 1555 deletions

3
.gitignore vendored
View File

@@ -68,6 +68,9 @@ ipch/
_ReSharper*/
*.[Rr]e[Ss]harper
# CodeRush is a .NET coding add-in
.cr*/
# TeamCity is a build add-in
_TeamCity*

View File

@@ -6,7 +6,7 @@ Orchard is a free, open source, community-focused Content Management System buil
You can try it for free on [DotNest.com](https://dotnest.com) or on Microsoft Azure by clicking on this button.
[![Deploy to Azure](https://azuredeploy.net/deploybutton.png)](https://portal.azure.com/#create/OutercurveFoundation.OrchardCMS.1.0.4)
[![Deploy to Azure](https://azuredeploy.net/deploybutton.png)](https://portal.azure.com/#create/OutercurveFoundation.OrchardCMS)
## About The Orchard Project
@@ -16,22 +16,19 @@ Orchard is a free, open source, community-focused **Content Management System**
Orchard is built on a modern architecture that puts extensibility up-front, as its number one concern. All components in Orchard can be replaced or extended. Content is built from easily composable building blocks. Modules extend the system in a very decoupled fashion, where a commenting module for example can as easily apply to pages, blog posts, photos or products. A rich UI composition system completes the picture and ensures that you can get the exact presentation that you need for your content.
Orchard is delivered under the [.NET Foundation](http://www.dotnetfoundation.org/orchard). It is licensed under a [New BSD license](http://www.opensource.org/licenses/bsd-license.php), which is approved by the OSI.
Orchard is delivered under the [.NET Foundation](https://dotnetfoundation.org/orchard-cms). It is licensed under a [New BSD license](http://www.opensource.org/licenses/bsd-license.php), which is approved by the OSI.
Our mission is to empower our users and foster a dedicated and diverse community that builds the CMS that we all want to use.
## Project Status
Orchard is currently in version **1.10** and **1.9.3**:
- *1.10* is the latest major version which introduces more impactful changes and new features as well. If you're new to Orchard, you should start with this version.
- *1.9.3* contains further bugfixes in addition to *1.9.2* and these versions are based on the feature set of Orchard *1.9*.
Orchard is currently in version **[1.10.1](https://github.com/OrchardCMS/Orchard/releases/tag/1.10.1)**: It contains bugfixes and the more impactful changes and new features added in the latest major version (*1.10*).
We invite participation by the developer community in shaping the projects direction, so that we can publicly validate our designs and development approach.
All our releases are available on our [Releases](https://github.com/OrchardCMS/Orchard/releases) page, and it's easy to [Install Orchard using the Web Platform Installer](http://docs.orchardproject.net/Documentation/Installing-Orchard) as well. We encourage interested developers to check out the source code on the Orchard GitHub site and get involved with the project.
* [Download the latest release](https://github.com/OrchardCMS/Orchard/releases)
* [Feature roadmap](http://docs.orchardproject.net/Documentation/feature-roadmap)
* [Feature roadmap](http://docs.orchardproject.net/Documentation/Feature-roadmap)
* [Docs and designs/specs](http://www.orchardproject.net/docs)
* [About us](http://www.orchardproject.net/about)
* [Contact us](mailto:ofeedbk@microsoft.com)

View File

@@ -10,8 +10,10 @@ var fs = require("fs"),
plumber = require("gulp-plumber"),
sourcemaps = require("gulp-sourcemaps"),
less = require("gulp-less"),
cssnano = require("gulp-cssnano"),
sass = require("gulp-sass"),
postcss = require("gulp-postcss"),
autoprefixer = require("autoprefixer"),
cssnano = require("cssnano"),
typescript = require("gulp-typescript"),
uglify = require("gulp-uglify"),
rename = require("gulp-rename"),
@@ -136,8 +138,12 @@ function buildCssPipeline(assetGroup, doConcat, doRebuild) {
throw "Input file '" + inputPath + "' is not of a valid type for output file '" + assetGroup.outputPath + "'.";
});
var generateSourceMaps = assetGroup.hasOwnProperty("generateSourceMaps") ? assetGroup.generateSourceMaps : true;
var containsLessOrScss = assetGroup.inputPaths.some(function (inputPath) {
var ext = path.extname(inputPath).toLowerCase();
return ext === ".less" || ext === ".scss";
});
// Source maps are useless if neither concatenating nor transforming.
if ((!doConcat || assetGroup.inputPaths.length < 2) && !assetGroup.inputPaths.some(function (inputPath) { return path.extname(inputPath).toLowerCase() === ".less"; }))
if ((!doConcat || assetGroup.inputPaths.length < 2) && !containsLessOrScss)
generateSourceMaps = false;
var minifiedStream = gulp.src(assetGroup.inputPaths) // Minified output, source mapping completely disabled.
.pipe(gulpif(!doRebuild,
@@ -150,23 +156,25 @@ function buildCssPipeline(assetGroup, doConcat, doRebuild) {
.pipe(plumber())
.pipe(gulpif("*.less", less()))
.pipe(gulpif("*.scss", sass({
precision: 10
precision: 10
})))
.pipe(gulpif(doConcat, concat(assetGroup.outputFileName)))
.pipe(cssnano({
autoprefixer: { browsers: ["last 2 versions"] },
discardComments: { removeAll: true },
discardUnused: false,
mergeIdents: false,
reduceIdents: false,
zindex: false
}))
.pipe(postcss([
autoprefixer({ browsers: ["last 2 versions"] }),
cssnano({
discardComments: { removeAll: true },
discardUnused: false,
mergeIdents: false,
reduceIdents: false,
zindex: false
})
]))
.pipe(rename({
suffix: ".min"
}))
.pipe(eol())
.pipe(gulp.dest(assetGroup.outputDir));
var devStream = gulp.src(assetGroup.inputPaths) // Non-minified output, with source mapping
var devStream = gulp.src(assetGroup.inputPaths) // Non-minified output, with source mapping.
.pipe(gulpif(!doRebuild,
gulpif(doConcat,
newer(assetGroup.outputPath),
@@ -178,9 +186,12 @@ function buildCssPipeline(assetGroup, doConcat, doRebuild) {
.pipe(gulpif(generateSourceMaps, sourcemaps.init()))
.pipe(gulpif("*.less", less()))
.pipe(gulpif("*.scss", sass({
precision: 10
precision: 10
})))
.pipe(gulpif(doConcat, concat(assetGroup.outputFileName)))
.pipe(postcss([
autoprefixer({ browsers: ["last 2 versions"] })
]))
.pipe(header(
"/*\n" +
"** NOTE: This file is generated by Gulp and should not be edited directly!\n" +

View File

@@ -73,4 +73,4 @@ Scenario: Creating and using Boolean fields
| name | value |
| Event.Active.Value | |
And I hit "Save"
Then I should see "The field Active is mandatory."
Then I should see "The Active field is required."

View File

@@ -211,7 +211,7 @@ this.ScenarioSetup(scenarioInfo);
#line 75
testRunner.And("I hit \"Save\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 76
testRunner.Then("I should see \"The field Active is mandatory.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
testRunner.Then("I should see \"The Active field is required.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
#line hidden
this.ScenarioCleanup();
}

View File

@@ -106,7 +106,7 @@ Scenario: Creating and using Enumeration fields
And I hit "Save"
And I go to "Admin/Contents/Create/Event"
And I hit "Save"
Then I should see "The field Location is mandatory."
Then I should see "The Location field is required."
# The default value should be proposed on creation
When I go to "Admin/ContentTypes/Edit/Event"

View File

@@ -272,7 +272,7 @@ this.ScenarioSetup(scenarioInfo);
#line 108
testRunner.And("I hit \"Save\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 109
testRunner.Then("I should see \"The field Location is mandatory.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
testRunner.Then("I should see \"The Location field is required.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
#line 112
testRunner.When("I go to \"Admin/ContentTypes/Edit/Event\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When ");
#line hidden

View File

@@ -114,7 +114,7 @@ Scenario: Creating and using Input fields
| name | value |
| Event.Contact.Value | |
And I hit "Save"
Then I should see "The field Contact is mandatory."
Then I should see "The Contact field is required."
# Creating an Event content item
When I go to "Admin/Contents/Create/Event"

View File

@@ -271,7 +271,7 @@ this.ScenarioSetup(scenarioInfo);
#line 116
testRunner.And("I hit \"Save\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 117
testRunner.Then("I should see \"The field Contact is mandatory.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
testRunner.Then("I should see \"The Contact field is required.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
#line 120
testRunner.When("I go to \"Admin/Contents/Create/Event\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When ");
#line 121

View File

@@ -63,7 +63,7 @@ Scenario: Creating and using media fields
| name | value |
| Event.File.Url | |
And I hit "Save"
Then I should see "The field File is mandatory."
Then I should see "The File field is required."
# The value should be bound
When I go to "Admin/ContentTypes/Edit/Event"
@@ -77,4 +77,4 @@ Scenario: Creating and using media fields
| name | value |
| Event.File.Url | ~/Media/Default/images/Image.png |
And I hit "Save"
Then I should see "The field File must have one of these extensions: jpg"
Then I should see "The File field must have one of these extensions: jpg."

View File

@@ -190,7 +190,7 @@ this.ScenarioSetup(scenarioInfo);
#line 65
testRunner.And("I hit \"Save\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 66
testRunner.Then("I should see \"The field File is mandatory.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
testRunner.Then("I should see \"The File field is required.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
#line 69
testRunner.When("I go to \"Admin/ContentTypes/Edit/Event\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When ");
#line hidden
@@ -221,7 +221,7 @@ this.ScenarioSetup(scenarioInfo);
#line 79
testRunner.And("I hit \"Save\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 80
testRunner.Then("I should see \"The field File must have one of these extensions: jpg\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
testRunner.Then("I should see \"The File field must have one of these extensions: jpg.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
#line hidden
this.ScenarioCleanup();
}

View File

@@ -64,7 +64,7 @@ Scenario: Creating and using numeric fields
| name | value |
| Event.Guests.Value | |
And I hit "Save"
Then I should see "The field Guests is mandatory."
Then I should see "The Guests field is required."
# The value should be bound
When I go to "Admin/ContentTypes/Edit/Event"

View File

@@ -194,7 +194,7 @@ this.ScenarioSetup(scenarioInfo);
#line 66
testRunner.And("I hit \"Save\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 67
testRunner.Then("I should see \"The field Guests is mandatory.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
testRunner.Then("I should see \"The Guests field is required.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
#line 70
testRunner.When("I go to \"Admin/ContentTypes/Edit/Event\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When ");
#line hidden

View File

@@ -51,7 +51,7 @@ Scenario: Creating and using Text fields
| name | value |
| Event.Subject.Text | |
And I hit "Save"
Then I should see "The field Subject is mandatory."
Then I should see "The Subject field is required."
# The hint should be displayed
When I go to "Admin/ContentTypes/Edit/Event"

View File

@@ -169,7 +169,7 @@ this.ScenarioSetup(scenarioInfo);
#line 53
testRunner.And("I hit \"Save\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 54
testRunner.Then("I should see \"The field Subject is mandatory.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
testRunner.Then("I should see \"The Subject field is required.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
#line 57
testRunner.When("I go to \"Admin/ContentTypes/Edit/Event\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When ");
#line hidden

View File

@@ -205,7 +205,8 @@ namespace Orchard.Tests.Modules.Users.Controllers {
@"Ima.Fool@example.com",
@"""Ima.Fool""@example.com",
@"""Ima Fool""@example.com",
"2xxx1414@i.ua"
"2xxx1414@i.ua",
"Dreißig-öffentliche-Ämter-in-Übersee@Beispiel.de"
)]
string email)
{

View File

@@ -39,5 +39,21 @@ namespace Orchard.Tests.Localization {
Assert.AreEqual("Foo \"{0}\"", translations["~/themes/mytheme/views/myview.cshtml|foo \"{0}\""]);
}
[Test]
public void ShouldHandleUnclosedQuote() {
var parser = new LocalizationStreamParser();
var text = new StringBuilder();
text.AppendLine("#: ~/Themes/MyTheme/Views/MyView.cshtml");
text.AppendLine("msgctxt \"");
text.AppendLine("msgid \"Foo \\\"{0}\\\"\"");
text.AppendLine("msgstr \"Foo \\\"{0}\\\"\"");
var translations = new Dictionary<string, string>();
parser.ParseLocalizationStream(text.ToString(), translations, false);
Assert.AreEqual("Foo \"{0}\"", translations["|foo \"{0}\""]);
}
}
}

View File

@@ -1,9 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
<log4net xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<root>
<priority value="ERROR" xdt:Transform="SetAttributes(value)" />
<appender-ref ref="debug-file" xdt:Locator="Match(ref)" xdt:Transform="Remove" />
</root>
<logger name="Orchard" xdt:Locator="Match(name)" xdt:Transform="Remove" />
<appender name="debugger" xdt:Locator="Match(name)" xdt:Transform="Remove" />
<appender name="debug-file" xdt:Locator="Match(name)" xdt:Transform="Remove" />
<appender>
<immediateFlush value="false" xdt:Transform="SetAttributes(value)" />
</appender>
</log4net>

View File

@@ -69,7 +69,7 @@ namespace Orchard.Core.Common.Drivers {
field.Value = viewModel.Text;
if (settings.Required && String.IsNullOrWhiteSpace(field.Value)) {
updater.AddModelError("Text", T("The field {0} is mandatory", T(field.DisplayName)));
updater.AddModelError("Text", T("The {0} field is required.", T(field.DisplayName)));
}
}

View File

@@ -23,12 +23,12 @@ namespace Orchard.Core.Common {
}
[Shape]
public IHtmlString PublishedState(dynamic Display, DateTime createdDateTimeUtc, DateTime? publisheddateTimeUtc) {
public IHtmlString PublishedState(dynamic Display, DateTime createdDateTimeUtc, DateTime? publisheddateTimeUtc, LocalizedString customDateFormat) {
if (!publisheddateTimeUtc.HasValue) {
return T("Draft");
}
return Display.DateTime(DateTimeUtc: createdDateTimeUtc);
return Display.DateTime(DateTimeUtc: createdDateTimeUtc, CustomFormat: customDateFormat);
}
[Shape]

View File

@@ -1,4 +1,6 @@
@{
var propertyName = Model.PropertyName != null ? (string)Model.PropertyName : "Text";
var htmlAttributes = new Dictionary<string, object> {
{"class", "text large"}
};
@@ -12,4 +14,4 @@
}
}
@Html.TextBox("Text", (string)Model.Text, htmlAttributes)
@Html.TextBox(propertyName, (string)Model.Text, htmlAttributes)

View File

@@ -1,4 +1,6 @@
@{
var propertyName = Model.PropertyName != null ? (string)Model.PropertyName : "Text";
var htmlAttributes = new Dictionary<string, object> {
{"class", "text small"}
};
@@ -12,4 +14,4 @@
}
}
@Html.TextBox("Text", (string)Model.Text, htmlAttributes)
@Html.TextBox(propertyName, (string)Model.Text, htmlAttributes)

View File

@@ -1,4 +1,6 @@
@{
var propertyName = Model.PropertyName != null ? (string)Model.PropertyName : "Text";
var htmlAttributes = new Dictionary<string, object>();
if (Model.Required == true) {
@@ -14,4 +16,4 @@
}
}
@Html.TextArea("Text", (string)Model.Text, 25, 80, htmlAttributes)
@Html.TextArea(propertyName, (string)Model.Text, 25, 80, htmlAttributes)

View File

@@ -1,4 +1,6 @@
@{
var propertyName = Model.PropertyName != null ? (string)Model.PropertyName : "Text";
var htmlAttributes = new Dictionary<string, object> {
{"class", "text medium"}
};
@@ -12,4 +14,4 @@
}
}
@Html.TextBox("Text", (string)Model.Text, htmlAttributes)
@Html.TextBox(propertyName, (string)Model.Text, htmlAttributes)

View File

@@ -1,5 +1,7 @@
@using Orchard.Utility.Extensions;
@{
var propertyName = Model.PropertyName != null ? (string)Model.PropertyName : "Text";
string editorFlavor = Model.EditorFlavor;
var htmlAttributes = new Dictionary<string, object> {
@@ -19,4 +21,4 @@
}
}
@Html.TextArea("Text", (string)Model.Text, 25, 80, htmlAttributes)
@Html.TextArea(propertyName, (string)Model.Text, 25, 80, htmlAttributes)

View File

@@ -22,7 +22,7 @@
<fieldset>
@Html.LabelFor(m => m.EnablePositioning, @T("Enable drag and drop"))
@Html.EditorFor(m => m.EnablePositioning)
<span class="hint">@T("Check this option to enable manual repositioning of items using. If not set, this option will be configurable on the list content item itself.")</span>
<span class="hint">@T("Check this option to enable manual repositioning of items using drag and drop. If not set, this option will be configurable on the list content item itself.")</span>
</fieldset>
<fieldset>
@Html.LabelFor(m => m.AdminListViewName, @T("List View"))
@@ -45,4 +45,4 @@
<span class="hint">@T("Select zero or more content types that this content type supports. Selecting zero content types means the list can contain any content type. Only types with the Containable part can be contained in a list.")</span>
</div>
</fieldset>
}
}

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Web.Mvc;
using System.Web.Routing;
@@ -110,11 +111,11 @@ namespace Orchard.Core.Contents.Controllers {
break;
}
if(!String.IsNullOrWhiteSpace(model.Options.SelectedCulture)) {
if (!String.IsNullOrWhiteSpace(model.Options.SelectedCulture)) {
query = _cultureFilter.FilterCulture(query, model.Options.SelectedCulture);
}
if(model.Options.ContentsStatus == ContentsStatus.Owner) {
if (model.Options.ContentsStatus == ContentsStatus.Owner) {
query = query.Where<CommonPartRecord>(cr => cr.OwnerId == Services.WorkContext.CurrentUser.Id);
}
@@ -241,6 +242,10 @@ namespace Orchard.Core.Contents.Controllers {
if (string.IsNullOrEmpty(id))
return CreatableTypeList(containerId);
if (_contentDefinitionManager.GetTypeDefinition(id) == null) {
return RedirectToAction("Create", new { id = "" });
}
var contentItem = _contentManager.New(id);
if (!Services.Authorizer.Authorize(Permissions.EditContent, contentItem, T("Cannot create content")))
@@ -413,13 +418,40 @@ namespace Orchard.Core.Contents.Controllers {
if (contentItem != null) {
_contentManager.Remove(contentItem);
Services.Notifier.Success(string.IsNullOrWhiteSpace(contentItem.TypeDefinition.DisplayName)
? T("That content has been removed.")
: T("That {0} has been removed.", contentItem.TypeDefinition.DisplayName));
? T("The content has been removed.")
: T("The {0} has been removed.", contentItem.TypeDefinition.DisplayName));
}
return this.RedirectLocal(returnUrl, () => RedirectToAction("List"));
}
[HttpPost]
public ActionResult DiscardDraft(int id, string returnUrl) {
var contentItem = _contentManager.Get(id, VersionOptions.Latest);
if (contentItem == null) {
return HttpNotFound();
}
if (!contentItem.TypeDefinition.Settings.GetModel<ContentTypeSettings>().Draftable
|| !contentItem.HasPublished()
|| contentItem.IsPublished()) {
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
if (!Services.Authorizer.Authorize(Permissions.DeleteContent, contentItem, T("Couldn't remove draft"))) {
return new HttpUnauthorizedResult();
}
_contentManager.DiscardDraft(contentItem);
Services.Notifier.Information(string.IsNullOrWhiteSpace(contentItem.TypeDefinition.DisplayName)
? T("That draft has been removed.")
: T("That {0} draft has been removed.", contentItem.TypeDefinition.DisplayName));
return this.RedirectLocal(returnUrl, () => RedirectToAction("List"));
}
[HttpPost]
public ActionResult Publish(int id, string returnUrl) {
var contentItem = _contentManager.GetLatest(id);
@@ -431,7 +463,7 @@ namespace Orchard.Core.Contents.Controllers {
_contentManager.Publish(contentItem);
Services.Notifier.Success(string.IsNullOrWhiteSpace(contentItem.TypeDefinition.DisplayName) ? T("That content has been published.") : T("That {0} has been published.", contentItem.TypeDefinition.DisplayName));
Services.Notifier.Success(string.IsNullOrWhiteSpace(contentItem.TypeDefinition.DisplayName) ? T("The content has been published.") : T("The {0} has been published.", contentItem.TypeDefinition.DisplayName));
return this.RedirectLocal(returnUrl, () => RedirectToAction("List"));
}
@@ -447,7 +479,7 @@ namespace Orchard.Core.Contents.Controllers {
_contentManager.Unpublish(contentItem);
Services.Notifier.Success(string.IsNullOrWhiteSpace(contentItem.TypeDefinition.DisplayName) ? T("That content has been unpublished.") : T("That {0} has been unpublished.", contentItem.TypeDefinition.DisplayName));
Services.Notifier.Success(string.IsNullOrWhiteSpace(contentItem.TypeDefinition.DisplayName) ? T("The content has been unpublished.") : T("The {0} has been unpublished.", contentItem.TypeDefinition.DisplayName));
return this.RedirectLocal(returnUrl, () => RedirectToAction("List"));
}

View File

@@ -12,9 +12,7 @@ namespace Orchard.Core.Contents.Drivers {
ContentShape("Parts_Contents_Publish_Summary",
() => shapeHelper.Parts_Contents_Publish_Summary()),
ContentShape("Parts_Contents_Publish_SummaryAdmin",
() => shapeHelper.Parts_Contents_Publish_SummaryAdmin()),
ContentShape("Parts_Contents_Clone_SummaryAdmin",
() => shapeHelper.Parts_Contents_Clone_SummaryAdmin())
() => shapeHelper.Parts_Contents_Publish_SummaryAdmin())
);
}

View File

@@ -12,7 +12,6 @@
<Place Parts_Contents_Publish="Content:5"/>
</Match>
<Match DisplayType="SummaryAdmin">
<Place Parts_Contents_Publish_SummaryAdmin="Actions:5"
Parts_Contents_Clone_SummaryAdmin="Actions:6"/>
<Place Parts_Contents_Publish_SummaryAdmin="Actions:5"/>
</Match>
</Placement>

View File

@@ -54,7 +54,7 @@
@Html.SelectOption((ContentsOrder)Model.Options.OrderBy, ContentsOrder.Modified, T("recently modified").ToString())
@Html.SelectOption((ContentsOrder)Model.Options.OrderBy, ContentsOrder.Published, T("recently published").ToString())
</select>
<label for="contentResults" class="bulk-order">@T("Filter by")</label>
<label for="contentResults" class="bulk-filter">@T("Filter by")</label>
<select id="contentResults" name="Options.ContentsStatus">
@Html.SelectOption((ContentsStatus)Model.Options.ContentsStatus, ContentsStatus.Owner, T("owned by me").ToString())
@Html.SelectOption((ContentsStatus)Model.Options.ContentsStatus, ContentsStatus.Latest, T("latest").ToString())

View File

@@ -1,8 +1,12 @@
@using Orchard.Utility.Extensions;
@{
var contentTypeClassName = ((string)Model.ContentItem.ContentType).HtmlClassify();
Model.Classes.Add(contentTypeClassName);
Model.Classes.Add("content-item");
var tag = Tag(Model, "article");
}
<article class="content-item @contentTypeClassName">
@tag.StartElement
<header>
@Display(Model.Header)
@if (Model.Meta != null) {
@@ -17,4 +21,4 @@
@Display(Model.Footer)
</footer>
}
</article>
@tag.EndElement

View File

@@ -1,9 +1,8 @@
@using Orchard.ContentManagement;
@using Orchard.Core.Contents
@using Orchard.Core.Contents;
@using Orchard.Utility.Extensions;
@{
ContentItem contentItem = Model.ContentItem;
var returnUrl = ViewContext.RequestContext.HttpContext.Request.ToUrlString();
}
<div class="summary" itemscope="itemscope" itemid="@contentItem.Id" itemtype="http://orchardproject.net/data/ContentItem">
<div class="properties">
@@ -18,12 +17,6 @@
</div>
<div class="related">
@Display(Model.Actions)
@if (Authorizer.Authorize(Permissions.EditContent, contentItem)) {
@Html.ItemEditLink(T("Edit").Text, contentItem)@T(" | ")
}
@if (Authorizer.Authorize(Permissions.DeleteContent, contentItem)) {
@Html.Link(T("Delete").Text, Url.ItemRemoveUrl(contentItem, new {returnUrl}), new {itemprop = "RemoveUrl UnsafeUrl"})
}
</div>
@if (Model.Content != null) {
<div class="primary">@Display(Model.Content)</div>

View File

@@ -4,38 +4,55 @@
@{
Script.Require("ShapesBase");
ContentPart contentPart = Model.ContentPart;
ContentItem contentItem = Model.ContentItem;
var returnUrl = ViewContext.RequestContext.HttpContext.Request.ToUrlString();
var hasPublished = contentItem.HasPublished();
var hasDraft = contentItem.HasDraft();
var isPublished = contentItem.IsPublished();
var authorizedToEdit = Authorizer.Authorize(Permissions.EditContent, contentItem);
var authorizedToDelete = Authorizer.Authorize(Permissions.DeleteContent, contentItem);
var authorizedToPublish = Authorizer.Authorize(Permissions.PublishContent, contentItem);
}
@if (contentPart.HasPublished()) {
@Html.ItemDisplayLink(T("View").Text, (ContentItem)Model.ContentPart.ContentItem)
@T(" | ")
if (contentPart.HasDraft()) {
if (Authorizer.Authorize(Permissions.PublishContent, contentPart)) {
@Html.Link(T("Publish Draft").Text, Url.Action("Publish", "Admin", new {area = "Contents", id = contentPart.ContentItem.Id, returnUrl = Request.ToUrlString()}), new {itemprop = "UnsafeUrl"})
@T(" | ")
}
if (Authorizer.Authorize(Permissions.PreviewContent, contentPart)) {
@Html.ActionLink(T("Preview").Text, "Display", "Item", new { area = "Contents", id = ((ContentItem)Model.ContentPart.ContentItem).Id, version = ((ContentItem)Model.ContentPart.ContentItem).Version }, new { })
@T(" | ")
}
<div class="item-action-links">
<strong>@T("Item:")</strong>
@if (hasPublished) {
@Html.ItemDisplayLink(T("View").Text, contentItem);
}
if (Authorizer.Authorize(Permissions.PublishContent, contentPart)) {
@Html.Link(T("Unpublish").Text, Url.Action("Unpublish", "Admin", new {area = "Contents", id = contentPart.ContentItem.Id, returnUrl = Request.ToUrlString()}), new {itemprop = "UnsafeUrl"})
@if (authorizedToEdit) {
if (hasPublished) {
@T(" | ")
}
@Html.ItemEditLink(T("Edit").Text, contentItem);
@T(" | ")
}
} else {
if (contentPart.HasDraft()) {
if (Authorizer.Authorize(Permissions.PreviewContent, contentPart)) {
@Html.ActionLink(T("Preview").Text, "Display", "Item", new { area = "Contents", id = ((ContentItem)Model.ContentPart.ContentItem).Id, version = ((ContentItem)Model.ContentPart.ContentItem).Version }, new { })
@T(" | ")
}
@Html.ActionLink(T(" Clone").Text, "Clone", "Admin", new { Id = contentItem.Id, ReturnUrl = Request.ToUrlString(), Area = "Contents" }, new { itemprop = "UnsafeUrl" });
}
if (Authorizer.Authorize(Permissions.PublishContent, contentPart)) {
@Html.Link(T("Publish").Text, Url.Action("Publish", "Admin", new {area = "Contents", id = contentPart.ContentItem.Id, returnUrl = Request.ToUrlString()}), new {itemprop = "UnsafeUrl"})
@if (hasPublished && authorizedToPublish) {
@T(" | ")
@Html.ActionLink(T("Unpublish").Text, "Unpublish", "Admin", new { area = "Contents", id = contentItem.Id, returnUrl = Request.ToUrlString() }, new { itemprop = "UnsafeUrl" });
}
@if (authorizedToDelete) {
@T(" | ")
@Html.Link(T("Remove").Text, Url.ItemRemoveUrl(contentItem, new { returnUrl }), new { itemprop = "RemoveUrl UnsafeUrl" });
}
</div>
@if ((!isPublished || hasDraft) && authorizedToEdit) {
<div class="draft-action-links">
<strong>@T("Draft:")</strong>
@if (!isPublished && Authorizer.Authorize(Permissions.PreviewContent, contentItem)) {
@Html.ActionLink(T("View").Text, "Display", "Item", new { area = "Contents", id = contentItem.Id, version = contentItem.Version }, new { });
}
@if (hasDraft && authorizedToPublish) {
@T(" | ")
@Html.ActionLink(T("Publish").Text, "Publish", "Admin", new { area = "Contents", id = contentItem.Id, returnUrl = Request.ToUrlString() }, new { itemprop = "UnsafeUrl" });
}
@if (!isPublished && hasPublished && authorizedToDelete) {
@T(" | ")
@Html.ActionLink(T("Discard").Text, "DiscardDraft", "Admin", new { area = "Contents", id = contentItem.Id, returnUrl = Request.ToUrlString() }, new { itemprop = "RemoveUrl UnsafeUrl" });
}
</div>
}

View File

@@ -1,7 +1,8 @@
using System;
using System;
using Orchard.Commands;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Aspects;
using Orchard.Core.Common.Models;
using Orchard.Core.Navigation.Models;
using Orchard.Core.Navigation.Services;
using Orchard.Security;
@@ -15,7 +16,7 @@ namespace Orchard.Core.Navigation.Commands {
private readonly IMembershipService _membershipService;
public MenuCommands(
IContentManager contentManager,
IContentManager contentManager,
IMenuService menuService,
ISiteService siteService,
IMembershipService membershipService) {
@@ -27,7 +28,10 @@ namespace Orchard.Core.Navigation.Commands {
[OrchardSwitch]
public string MenuPosition { get; set; }
[OrchardSwitch]
public string Identity { get; set; }
[OrchardSwitch]
public string Owner { get; set; }
@@ -41,7 +45,7 @@ namespace Orchard.Core.Navigation.Commands {
public string MenuName { get; set; }
[CommandName("menuitem create")]
[CommandHelp("menuitem create /MenuPosition:<position> /MenuText:<text> /Url:<url> /MenuName:<name> [/Owner:<username>] \r\n\t" + "Creates a new menu item")]
[CommandHelp("menuitem create /MenuPosition:<position> /MenuText:<text> /Url:<url> /MenuName:<name> [/Owner:<username>]\r\n\t" + "Creates a new menu item")]
[OrchardSwitches("MenuPosition,MenuText,Url,MenuName,Owner")]
public void Create() {
// flushes before doing a query in case a previous command created the menu
@@ -75,17 +79,20 @@ namespace Orchard.Core.Navigation.Commands {
}
[CommandName("menu create")]
[CommandHelp("menu create /MenuName:<name>\r\n\t" + "Creates a new menu")]
[OrchardSwitches("MenuName")]
[CommandHelp("menu create /MenuName:<name> [/Identity:<identity>] \r\n\t" + "Creates a new menu")]
[OrchardSwitches("MenuName,Identity")]
public void CreateMenu() {
if (string.IsNullOrWhiteSpace(MenuName)) {
Context.Output.WriteLine(T("Menu name can't be empty.").Text);
return;
}
_menuService.Create(MenuName);
var menuItem = _menuService.Create(MenuName);
if (menuItem.Has<IdentityPart>() && !String.IsNullOrEmpty(Identity)) {
menuItem.As<IdentityPart>().Identifier = Identity;
}
Context.Output.WriteLine(T("Menu created successfully.").Text);
}
}
}
}

View File

@@ -177,5 +177,13 @@ namespace Orchard.Core.Navigation {
return 6;
}
public int UpdateFrom6() {
ContentDefinitionManager.AlterTypeDefinition("ShapeMenuItem", cfg => cfg
.WithIdentity()
);
return 7;
}
}
}
}

View File

@@ -25,27 +25,27 @@
</fieldset>
<fieldset>
@Html.EditorFor(m => m.Breadcrumb)
@Html.EditorFor(m => m.Breadcrumb)
<label class="forcheckbox" for="@Html.FieldIdFor(m => m.Breadcrumb)">@T("Display as Breadcrumb")</label>
<span class="hint">@T("Check to render the path to the current content item.")</span>
</fieldset>
<div data-controllerid="@Html.FieldIdFor(m => m.Breadcrumb)">
<fieldset>
@Html.EditorFor(m => m.AddHomePage)
@Html.EditorFor(m => m.AddHomePage)
<label class="forcheckbox" for="@Html.FieldIdFor(m => m.AddHomePage)">@T("Add the home page as the first element")</label>
<span class="hint">@T("Check to render the home page as the first element of the breadcrumb.")</span>
</fieldset>
<fieldset>
@Html.EditorFor(m => m.AddCurrentPage)
@Html.EditorFor(m => m.AddCurrentPage)
<label class="forcheckbox" for="@Html.FieldIdFor(m => m.AddCurrentPage)">@T("Add the current content item as the last element")</label>
<span class="hint">@T("Check to render the current content item as the last element.")</span>
</fieldset>
</div>
<fieldset>
@Html.EditorFor(m => m.ShowFullMenu)
@Html.EditorFor(m => m.ShowFullMenu)
<label class="forcheckbox" for="@Html.FieldIdFor(m => m.ShowFullMenu)">@T("No filter on selected page")</label>
<span class="hint">@T("Check for the menu to be display without filtering the selected current page.")</span>
</fieldset>
<span class="hint">@T("Check for the menu to be displayed without filtering the selected current page.")</span>
</fieldset>

View File

@@ -558,9 +558,6 @@
<ItemGroup>
<Content Include="Navigation\Views\MenuItemLink-ShapeMenuItem.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Contents\Views\Parts.Contents.Clone.SummaryAdmin.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Contents\Views\Item\Display.cshtml" />
</ItemGroup>

View File

@@ -63,8 +63,8 @@
<span class="hint">@T("Determines whether scripts and stylesheets load in their debuggable or minified form.")</span>
</div>
<div>
@Html.LabelFor(m => m.UseCdn, T("Use CDN"))
@Html.CheckBoxFor(m => m.UseCdn)
@Html.LabelFor(m => m.UseCdn, T("Use CDN").Text, new { @class = "forcheckbox" })
<span class="hint">@T("Determines whether the defined CDN value is used for scripts and stylesheets, or their local version")</span>
</div>
<div>
@@ -84,4 +84,4 @@
<span class="hint">@T("Determines the last element of the database that can be displayed. Leave 0 for unlimited.")</span>
</div>
}
</fieldset>
</fieldset>

View File

@@ -283,7 +283,7 @@ namespace Orchard.Core.Shapes {
[Shape]
public void ContentZone(dynamic Display, dynamic Shape, TextWriter Output) {
var unordered = ((IEnumerable<dynamic>)Shape).ToArray();
var tabbed = unordered.GroupBy(x => (string)x.Metadata.Tab);
var tabbed = unordered.GroupBy(x => (string)x.Metadata.Tab ?? "");
if (tabbed.Count() > 1) {
foreach (var tab in tabbed) {

View File

@@ -168,7 +168,7 @@ namespace Lucene.Services {
writer.DeleteDocuments(query);
}
catch (Exception ex) {
Logger.Error(ex, "An unexpected error occured while removing the documents [{0}] from the index [{1}].", String.Join(", ", documentIds), indexName);
Logger.Error(ex, "An unexpected error occurred while removing the documents [{0}] from the index [{1}].", String.Join(", ", documentIds), indexName);
}
}
}

View File

@@ -1,6 +1,8 @@
@using Orchard.Environment.Descriptor.Models
@{
var propertyName = Model.PropertyName != null ? (string)Model.PropertyName : "Text";
Script.Require("OrchardMarkdown");
Style.Require("OrchardMarkdown");
@@ -35,7 +37,7 @@
<div class="wmd-innerbox">
<div class="wmd-editor-box">
<div id="wmd-button-bar-@idPostfix" class="wmd-button-bar"></div>
@Html.TextArea("Text", (string)Model.Text, 25, 80, textAreaAttributes)
@Html.TextArea(propertyName, (string)Model.Text, 25, 80, textAreaAttributes)
</div>
<div class="wmd-preview-box">
<div id="wmd-preview-@idPostfix" class="wmd-panel wmd-preview"></div>

View File

@@ -172,8 +172,8 @@ namespace Orchard.Alias.Controllers {
}
catch (Exception ex) {
Services.TransactionManager.Cancel();
Services.Notifier.Error(T("An error occured while creating the alias {0}: {1}. Please check the values are correct.", aliasPath, ex.Message));
Logger.Error(ex, T("An error occured while creating the alias {0}", aliasPath).Text);
Services.Notifier.Error(T("An error occurred while creating the alias {0}: {1}. Please check the values are correct.", aliasPath, ex.Message));
Logger.Error(ex, T("An error occurred while creating the alias {0}", aliasPath).Text);
ViewBag.Path = aliasPath;
ViewBag.Route = routePath;
@@ -236,8 +236,8 @@ namespace Orchard.Alias.Controllers {
}
catch (Exception ex) {
Services.TransactionManager.Cancel();
Services.Notifier.Error(T("An error occured while editing the alias '{0}': {1}. Please check the values are correct.", aliasPath, ex.Message));
Logger.Error(ex, T("An error occured while creating the alias '{0}'", aliasPath).Text);
Services.Notifier.Error(T("An error occurred while editing the alias '{0}': {1}. Please check the values are correct.", aliasPath, ex.Message));
Logger.Error(ex, T("An error occurred while creating the alias '{0}'", aliasPath).Text);
ViewBag.Path = aliasPath;
ViewBag.Route = routePath;

View File

@@ -41,14 +41,14 @@ namespace Orchard.Alias.Navigation {
var urlLevel = endsWithSlash ? requestUrl.Count(l => l == '/') - 1 : requestUrl.Count(l => l == '/');
var menuLevel = menuPosition.Count(l => l == '.');
// Checking menu item if it's the leaf element or it's an intermediate element
// Checking the menu item whether it's the leaf element or it's an intermediate element
// or it's an unneccessary element according to the url.
RouteValueDictionary contentRoute;
if (menuLevel == urlLevel) {
contentRoute = request.RequestContext.RouteData.Values;
}
else {
// If menuLevel doesn't equal with urlLevel it can mean that this menu item is
// If menuLevel doesn't equal to urlLevel it can mean that this menu item is
// an intermediate element (the difference is a positive value) or this menu
// item is lower in the navigation hierarchy according to the url (negative
// value). If the value is negative, removing the menu item, if the value

View File

@@ -36,7 +36,7 @@ namespace Orchard.AntiSpam.Services {
return SpamStatus.Ham;
}
catch(Exception e) {
Logger.Error(e, "An error occured while checking for spam");
Logger.Error(e, "An error occurred while checking for spam");
return SpamStatus.Spam;
}
}
@@ -46,7 +46,7 @@ namespace Orchard.AntiSpam.Services {
var result = ExecuteValidateRequest(context, "submit-spam");
}
catch (Exception e) {
Logger.Error(e, "An error occured while reporting spam");
Logger.Error(e, "An error occurred while reporting spam");
}
}
@@ -55,7 +55,7 @@ namespace Orchard.AntiSpam.Services {
var result = ExecuteValidateRequest(context, "submit-ham");
}
catch (Exception e) {
Logger.Error(e, "An error occured while reporting ham");
Logger.Error(e, "An error occurred while reporting ham");
}
}

View File

@@ -18,6 +18,7 @@ using Orchard.Settings;
namespace Orchard.AuditTrail.Services {
public class AuditTrailManager : Component, IAuditTrailManager {
private readonly IRepository<AuditTrailEventRecord> _auditTrailRepository;
private readonly ITransactionManager _transactionManager;
private readonly IAuditTrailEventProvider _providers;
private readonly IClock _clock;
private readonly IAuditTrailEventHandler _auditTrailEventHandlers;
@@ -30,6 +31,7 @@ namespace Orchard.AuditTrail.Services {
public AuditTrailManager(
IRepository<AuditTrailEventRecord> auditTrailRepository,
ITransactionManager transactionManager,
IAuditTrailEventProvider providers,
IClock clock,
IAuditTrailEventHandler auditTrailEventHandlers,
@@ -41,6 +43,7 @@ namespace Orchard.AuditTrail.Services {
IClientHostAddressAccessor clientHostAddressAccessor) {
_auditTrailRepository = auditTrailRepository;
_transactionManager = transactionManager;
_providers = providers;
_clock = clock;
_auditTrailEventHandlers = auditTrailEventHandlers;
@@ -200,13 +203,10 @@ namespace Orchard.AuditTrail.Services {
public IEnumerable<AuditTrailEventRecord> Trim(TimeSpan retentionPeriod) {
var dateThreshold = (_clock.UtcNow.EndOfDay() - retentionPeriod);
var query = _auditTrailRepository.Table.Where(x => x.CreatedUtc <= dateThreshold);
var records = query.ToArray();
foreach (var record in records) {
_auditTrailRepository.Delete(record);
}
_transactionManager.GetSession().Delete(query);
return records;
return query.ToArray();
}
public string SerializeProviderConfiguration(IEnumerable<AuditTrailEventSetting> settings) {

View File

@@ -1 +1 @@
<a href="@Url.Action("Index", "Admin", new { content = Model.ContentItem.Id, area = "Orchard.AuditTrail" })">@T("Audit Trail")</a>@T(" | ")
<a href="@Url.Action("Index", "Admin", new { content = Model.ContentItem.Id, area = "Orchard.AuditTrail" })">@T("Audit Trail")</a>

View File

@@ -1,10 +1,20 @@
using Orchard.ContentManagement.MetaData;
using System;
using System.Collections.Generic;
using System.Linq;
using Orchard.Autoroute.Models;
using Orchard.Autoroute.Settings;
using Orchard.ContentManagement.MetaData;
using Orchard.Core.Contents.Extensions;
using Orchard.Data.Migration;
using Orchard.Localization.Services;
namespace Orchard.Autoroute
{
public class Migrations : DataMigrationImpl {
namespace Orchard.Autoroute {
public class Migrations : DataMigrationImpl {
private readonly ICultureManager _cultureManager;
public Migrations(ICultureManager cultureManager) {
_cultureManager = cultureManager;
}
public int Create() {
SchemaBuilder.CreateTable("AutoroutePartRecord",
@@ -49,5 +59,46 @@ namespace Orchard.Autoroute
return 4;
}
public int UpdateFrom4() {
// Adding some culture neutral patterns if they don't exist
var autoroutePartDefinitions = ContentDefinitionManager.ListTypeDefinitions()
.Where(t => t.Parts.Any(p => p.PartDefinition.Name.Equals(typeof(AutoroutePart).Name)))
.Select(s => new { contentTypeName = s.Name, autoroutePart = s.Parts.First(x => x.PartDefinition.Name == "AutoroutePart") });
foreach (var partDefinition in autoroutePartDefinitions) {
var settingsDictionary = partDefinition.autoroutePart.Settings;
var settings = settingsDictionary.GetModel<AutorouteSettings>();
if (!settings.Patterns.Any(x => String.IsNullOrWhiteSpace(x.Culture))) {
string siteCulture = _cultureManager.GetSiteCulture();
List<string> newPatterns = new List<string>();
if (settings.Patterns.Any(x => String.Equals(x.Culture, siteCulture, StringComparison.OrdinalIgnoreCase))) {
var siteCulturePatterns = settings.Patterns.Where(x => String.Equals(x.Culture, siteCulture, StringComparison.OrdinalIgnoreCase)).ToList();
foreach (RoutePattern pattern in siteCulturePatterns) {
newPatterns.Add(String.Format("{{\"Name\":\"{0}\",\"Pattern\":\"{1}\",\"Description\":\"{2}\"}}", pattern.Name, pattern.Pattern, pattern.Description));
}
}
else {
newPatterns.Add(String.Format("{{\"Name\":\"{0}\",\"Pattern\":\"{1}\",\"Description\":\"{2}\"}}", "Title", "{Content.Slug}", "my-title"));
}
if (settingsDictionary.ContainsKey("AutorouteSettings.PatternDefinitions")) {
string oldPatterns = settingsDictionary["AutorouteSettings.PatternDefinitions"];
if (oldPatterns.StartsWith("[") && oldPatterns.EndsWith("]"))
newPatterns.Add(oldPatterns.Substring(1, oldPatterns.Length - 2));
}
ContentDefinitionManager.AlterTypeDefinition(partDefinition.contentTypeName, cfg => cfg
.WithPart("AutoroutePart", builder => builder
.WithSetting("AutorouteSettings.PatternDefinitions", "[" + String.Join(",", newPatterns) + "]")
));
}
}
return 5;
}
}
}

View File

@@ -50,19 +50,24 @@ namespace Orchard.Autoroute.Providers.ContentDefinition {
public void ContentPartAttached(ContentPartAttachedContext context) {
if (context.ContentPartName == "AutoroutePart") {
//Create pattern and default pattern for each culture installed
// Create pattern and default pattern for each culture installed and for the neutral culture
//get cultures
// Get cultures
var SiteCultures = _cultureManager.ListCultures().ToList();
//Create Patterns and DefaultPatterns
// Adding a null culture for the culture neutral pattern
List<string> cultures = new List<string>();
cultures.Add(null);
cultures.AddRange(SiteCultures);
// Create Patterns and DefaultPatterns
var settings = new AutorouteSettings {
Patterns = new List<RoutePattern>()
};
List<RoutePattern> newPatterns = new List<RoutePattern>();
List<DefaultPattern> newDefaultPatterns = new List<DefaultPattern>();
foreach (string culture in SiteCultures) {
foreach (string culture in cultures) {
newPatterns.Add(new RoutePattern {
Name = "Title",
Description = "my-title",

View File

@@ -135,35 +135,47 @@ namespace Orchard.Autoroute.Services {
public RoutePattern GetDefaultPattern(string contentType, string culture) {
var settings = GetTypePartSettings(contentType).GetModel<AutorouteSettings>();
var defaultPattern = settings.DefaultPatterns.FirstOrDefault(x => x.Culture == culture);
var defaultPatternIndex = defaultPattern != null ? defaultPattern.PatternIndex : "0";
if (String.IsNullOrWhiteSpace(defaultPatternIndex))
defaultPatternIndex = "0";
if (settings.UseCulturePattern) {
var defaultPatternIndex = "0";
if (!settings.DefaultPatterns.Any(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase))) {
var patternIndex = String.IsNullOrWhiteSpace(settings.DefaultPatternIndex) ? "0" : settings.DefaultPatternIndex;
// Lazy updating from old setting.
if (String.Equals(culture, _cultureManager.GetSiteCulture(), StringComparison.OrdinalIgnoreCase)) {
settings.DefaultPatterns.Add(new DefaultPattern { PatternIndex = patternIndex, Culture = culture });
return settings.Patterns.Where(x => x.Culture == null).ElementAt(Convert.ToInt32(defaultPatternIndex));
if (!settings.DefaultPatterns.Any(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase))) {
// If no default pattern exists for the language return the default culture neutral pattern if it exists, else a generic pattern
if (settings.Patterns.Any(x => String.IsNullOrEmpty(x.Culture))) {
defaultPatternIndex = GetDefaultPatternIndex(contentType, null);
return settings.Patterns.Where(x => String.IsNullOrEmpty(x.Culture)).ElementAt(Convert.ToInt32(defaultPatternIndex));
}
else {
return new RoutePattern { Name = "Title", Description = "my-title", Pattern = "{Content.Slug}", Culture = culture };
}
}
else {
settings.DefaultPatterns.Add(new DefaultPattern { PatternIndex = "0", Culture = culture });
return new RoutePattern { Name = "Title", Description = "my-title", Pattern = "{Content.Slug}", Culture = culture };
// If patterns for the specified culture exist search one of them, else search a culture neutral pattern
var patternCultureSearch = settings.Patterns.Any(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase)) ? culture : null;
defaultPatternIndex = GetDefaultPatternIndex(contentType, patternCultureSearch);
if (settings.Patterns.Any()) {
if (settings.Patterns.Where(x => x.Culture == patternCultureSearch).ElementAt(Convert.ToInt32(defaultPatternIndex)) != null) {
return settings.Patterns.Where(x => x.Culture == patternCultureSearch).ElementAt(Convert.ToInt32(defaultPatternIndex));
}
}
}
else {
// Using the culture neutral pattern
if (settings.Patterns.Any(x => String.IsNullOrEmpty(x.Culture))) {
var defaultPatternIndex = GetDefaultPatternIndex(contentType, null);
// If no default culture neutral pattern exist use the default pattern
if (!settings.DefaultPatterns.Any(x => String.IsNullOrEmpty(x.Culture))) {
var patternIndex = String.IsNullOrWhiteSpace(settings.DefaultPatternIndex) ? "0" : settings.DefaultPatternIndex;
settings.DefaultPatterns.Add(new DefaultPattern { PatternIndex = patternIndex, Culture = null });
}
return settings.Patterns.Where(x => String.IsNullOrEmpty(x.Culture)).ElementAt(Convert.ToInt32(defaultPatternIndex));
}
}
// Return a default pattern if set.
var patternCultureSearch = settings.Patterns.Any(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase)) ? culture : null;
if (settings.Patterns.Any()) {
if (settings.Patterns.Where(x => x.Culture == patternCultureSearch).ElementAt(Convert.ToInt32(defaultPatternIndex)) != null) {
return settings.Patterns.Where(x => x.Culture == patternCultureSearch).ElementAt(Convert.ToInt32(defaultPatternIndex));
};
}
// Return a default pattern if none is defined.
// Return a default pattern if none is defined
return new RoutePattern { Name = "Title", Description = "my-title", Pattern = "{Content.Slug}", Culture = culture };
}
@@ -222,6 +234,23 @@ namespace Orchard.Autoroute.Services {
return contentDefinition.Parts.First(x => x.PartDefinition.Name == "AutoroutePart").Settings;
}
private string GetDefaultPatternIndex(string contentType, string culture) {
var settings = GetTypePartSettings(contentType).GetModel<AutorouteSettings>();
DefaultPattern defaultPattern = null;
if (String.IsNullOrEmpty(culture))
defaultPattern = settings.DefaultPatterns.FirstOrDefault(x => String.IsNullOrEmpty(x.Culture));
else
defaultPattern = settings.DefaultPatterns.FirstOrDefault(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase));
var defaultPatternIndex = defaultPattern != null ? defaultPattern.PatternIndex : "0";
if (String.IsNullOrWhiteSpace(defaultPatternIndex))
defaultPatternIndex = "0";
return defaultPatternIndex;
}
private static int? GetSlugVersion(string path, string potentialConflictingPath) {
int v;
var slugParts = potentialConflictingPath.Split(new[] { path }, StringSplitOptions.RemoveEmptyEntries);

View File

@@ -28,56 +28,55 @@ namespace Orchard.Autoroute.Settings {
var settings = definition.Settings.GetModel<AutorouteSettings>();
//get cultures
// Get cultures
settings.SiteCultures = _cultureManager.ListCultures().ToList();
//get default site culture
// Get default site culture
settings.DefaultSiteCulture = _cultureManager.GetSiteCulture();
//if a culture is not set on the pattern we set it to the default site culture for backward compatibility
if (!settings.Patterns.Any(x => String.Equals(x.Culture, settings.DefaultSiteCulture, StringComparison.OrdinalIgnoreCase))) {
foreach (RoutePattern pattern in settings.Patterns.Where(x => String.IsNullOrWhiteSpace(x.Culture))) {
settings.Patterns.Where(x => x.GetHashCode() == pattern.GetHashCode()).FirstOrDefault().Culture = settings.DefaultSiteCulture;
}
}
//Adding Patterns for the UI
// Adding Patterns for the UI
List<RoutePattern> newPatterns = new List<RoutePattern>();
// Adding a null culture for the culture neutral pattern
List<string> cultures = new List<string>();
cultures.Add(null);
cultures.AddRange(settings.SiteCultures);
int current = 0;
foreach (string culture in settings.SiteCultures) {
foreach (string culture in cultures) {
// Adding all existing patterns for the culture
foreach (RoutePattern routePattern in settings.Patterns.Where(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase))) {
if (settings.Patterns.Any(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase))) {
newPatterns.Add(settings.Patterns[current]);
} else {
newPatterns.Add(new RoutePattern {
Name = "Title",
Description = "my-title",
Pattern = "{Content.Slug}",
Culture = settings.DefaultSiteCulture
});
}
newPatterns.Add(settings.Patterns[current]);
current++;
}
//We add a pattern for each culture if there is none
// Adding a pattern for each culture if there is none
if (!settings.Patterns.Where(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase)).Any()) {
newPatterns.Add(new RoutePattern { Culture = culture, Name = "Title", Description = "my-title", Pattern = "{Content.Slug}" });
}
//we add a new empty line for each culture
// Adding a new empty line for each culture
newPatterns.Add(new RoutePattern { Culture = culture, Name = null, Description = null, Pattern = null });
// if the content type has no defaultPattern for autoroute, then assign one
if (!settings.DefaultPatterns.Any(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase))) {
//if we are in the default culture check the old setting
// If the content type has no defaultPattern for autoroute, assign one
bool defaultPatternExists = false;
if (String.IsNullOrEmpty(culture))
defaultPatternExists = settings.DefaultPatterns.Any(x => String.IsNullOrEmpty(x.Culture));
else
defaultPatternExists = settings.DefaultPatterns.Any(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase));
if (!defaultPatternExists) {
// If in the default culture check the old setting
if (String.Equals(culture, _cultureManager.GetSiteCulture(), StringComparison.OrdinalIgnoreCase)) {
var defaultPatternIndex = settings.DefaultPatternIndex;
if (!String.IsNullOrWhiteSpace(defaultPatternIndex)) {
var patternIndex = defaultPatternIndex;
settings.DefaultPatterns.Add(new DefaultPattern { Culture = settings.DefaultSiteCulture, PatternIndex = patternIndex });
} else {
}
else {
settings.DefaultPatterns.Add(new DefaultPattern { PatternIndex = "0", Culture = culture });
}
} else {
}
else {
settings.DefaultPatterns.Add(new DefaultPattern { PatternIndex = "0", Culture = culture });
}
}
@@ -96,25 +95,51 @@ namespace Orchard.Autoroute.Settings {
Patterns = new List<RoutePattern>()
};
//get cultures
// Get cultures
settings.SiteCultures = _cultureManager.ListCultures().ToList();
if (updateModel.TryUpdateModel(settings, "AutorouteSettings", null, null)) {
//TODO need to add validations client and/or server side here
// remove empty patterns
// If some default pattern is an empty pattern set it to the first pattern for the language
List<DefaultPattern> newDefaultPatterns = new List<DefaultPattern>();
foreach (var defaultPattern in settings.DefaultPatterns) {
RoutePattern correspondingPattern = null;
if (string.IsNullOrEmpty(defaultPattern.Culture))
correspondingPattern = settings.Patterns.Where(x => String.IsNullOrEmpty(x.Culture)).ElementAt(Convert.ToInt32(defaultPattern.PatternIndex));
else
correspondingPattern = settings.Patterns.Where(x => String.Equals(x.Culture, defaultPattern.Culture, StringComparison.OrdinalIgnoreCase)).ElementAt(Convert.ToInt32(defaultPattern.PatternIndex));
if (String.IsNullOrWhiteSpace(correspondingPattern.Name) && String.IsNullOrWhiteSpace(correspondingPattern.Pattern) && String.IsNullOrWhiteSpace(correspondingPattern.Description))
newDefaultPatterns.Add(new DefaultPattern { Culture = defaultPattern.Culture, PatternIndex = "0" });
else
newDefaultPatterns.Add(defaultPattern);
}
settings.DefaultPatterns = newDefaultPatterns;
// Remove empty patterns
var patterns = settings.Patterns;
patterns.RemoveAll(p => String.IsNullOrWhiteSpace(p.Name) && String.IsNullOrWhiteSpace(p.Pattern) && String.IsNullOrWhiteSpace(p.Description));
//If there is no default pattern for each culture we set default ones
// Adding a null culture for the culture neutral pattern
List<string> cultures = new List<string>();
cultures.Add(null);
cultures.AddRange(settings.SiteCultures);
//If there is no pattern for some culture create a default one
List<RoutePattern> newPatterns = new List<RoutePattern>();
int current = 0;
foreach (string culture in settings.SiteCultures) {
foreach (string culture in cultures) {
if (settings.Patterns.Any(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase))) {
foreach (RoutePattern routePattern in settings.Patterns.Where(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase))) {
newPatterns.Add(settings.Patterns[current]);
current++;
}
} else {
}
else {
newPatterns.Add(new RoutePattern {
Name = "Title",
Description = "my-title",
@@ -128,7 +153,7 @@ namespace Orchard.Autoroute.Settings {
settings.Patterns = newPatterns;
// update the settings builder
// Update the settings builder
settings.Build(builder);
}

View File

@@ -1,11 +1,15 @@
@model Orchard.Autoroute.Settings.AutorouteSettings
@using Orchard.Utility.Extensions;
@{
Script.Require("AutorouteBrowser");
Style.Require("AutorouteSettings");
int patternCount = 0;
int patternCultureCount = 0;
List<string> cultures = new List<string>();
cultures.Add(null);
cultures.AddRange(Model.SiteCultures);
}
<fieldset>
<div>
@@ -40,10 +44,10 @@
int i = 1;
string cssClass = "";
}
<li class="first selected"><a class="culture" href="#cat-@Model.DefaultSiteCulture">@Model.DefaultSiteCulture</a></li>
@foreach (var culture in Model.SiteCultures) {
if (culture != Model.DefaultSiteCulture) {
cssClass = i == Model.SiteCultures.Count - 1 ? "last" : "middle";
<li class="first selected"><a class="culture" href="#cat-culture-neutral">@T("All cultures")</a></li>
@foreach (var culture in cultures) {
if (!String.IsNullOrEmpty(culture)) {
cssClass = i == cultures.Count - 1 ? "last" : "middle";
<li class="@cssClass" style="@(Model.UseCulturePattern == false ? "display:none;" : "")"><a class="culture" href="#cat-@culture">@culture</a></li>
i++;
}
@@ -51,8 +55,8 @@
</ul>
</div>
<div id="content">
@foreach (var culture in Model.SiteCultures) {
<fieldset id="cat-@culture" class="items @(culture == Model.DefaultSiteCulture ? "default" : "")" style="@(culture == Model.DefaultSiteCulture ? "display:block;" : "display:none;")">
@foreach (var culture in cultures) {
<fieldset id="cat-@(String.IsNullOrEmpty(culture) ? "culture-neutral" : culture)" class="items @(String.IsNullOrEmpty(culture) ? "default" : "")" style="@(String.IsNullOrEmpty(culture) ? "display:block;" : "display:none;")">
<table class="autoroute-settings-patterns">
<tr>
<th class="autoroute-settings-default">@T("Default")</th>
@@ -63,7 +67,7 @@
</tr>
@for (int index = 0; index < Model.Patterns.Where(x => x.Culture == culture).Count(); index++) {
<tr>
<td>@Html.RadioButtonFor(m => m.DefaultPatterns[Model.SiteCultures.IndexOf(culture)].Culture, culture + "|" + patternCultureCount, patternCultureCount.ToString() == Model.DefaultPatterns[Model.SiteCultures.IndexOf(culture)].PatternIndex ? new { @checked = "checked" } : null)</td>
<td>@Html.RadioButtonFor(m => m.DefaultPatterns[cultures.IndexOf(culture)].Culture, culture + "|" + patternCultureCount, patternCultureCount.ToString() == Model.DefaultPatterns[cultures.IndexOf(culture)].PatternIndex ? new { @checked = "checked" } : null)</td>
<td>@Html.TextBoxFor(m => m.Patterns[patternCount].Name, new { @class = "text" })</td>
<td>@Html.TextBoxFor(m => m.Patterns[patternCount].Pattern, new { @class = "tokenized text" })</td>
<td>@Html.TextBoxFor(m => m.Patterns[patternCount].Description, new { @class = "text" })</td>

View File

@@ -147,7 +147,7 @@ namespace Orchard.Azure.MediaServices.Controllers {
_transactionManager.Cancel();
Logger.Error(ex, "Error while deleting asset with ID {0}.", id);
_notifier.Error(T("Ar error occurred while deleting the asset '{0}':\n{1}", asset.Name, ex.Message));
_notifier.Error(T("An error occurred while deleting the asset '{0}':\n{1}", asset.Name, ex.Message));
}
return Redirect(Url.ItemEditUrl(cloudVideoPart));
@@ -182,4 +182,4 @@ namespace Orchard.Azure.MediaServices.Controllers {
ModelState.AddModelError(key, errorMessage.ToString());
}
}
}
}

View File

@@ -164,7 +164,7 @@ namespace Orchard.Azure.MediaServices.Controllers {
_transactionManager.Cancel();
Logger.Error(ex, "Error while creating job with task of type {0} on cloud video item with ID {1}.", task, id);
_notifier.Error(T("Ar error occurred while creating the job:\n{0}", ex.Message));
_notifier.Error(T("An error occurred while creating the job:\n{0}", ex.Message));
}
}
@@ -253,4 +253,4 @@ namespace Orchard.Azure.MediaServices.Controllers {
ModelState.AddModelError(key, errorMessage.ToString());
}
}
}
}

View File

@@ -29,8 +29,8 @@ namespace Orchard.Azure.MediaServices.Controllers {
private readonly IAuthorizer _authorizer;
public MediaController(
IOrchardServices services,
IAssetManager assetManager,
IOrchardServices services,
IAssetManager assetManager,
ITransactionManager transactionManager) {
_contentManager = services.ContentManager;
@@ -124,7 +124,7 @@ namespace Orchard.Azure.MediaServices.Controllers {
Logger.Debug("User requested to save cloud video item with ID {0}.", part.Id);
var editorShape = _contentManager.UpdateEditor(part, this);
if (!ModelState.IsValid) {
_transactionManager.Cancel();
@@ -153,8 +153,8 @@ namespace Orchard.Azure.MediaServices.Controllers {
catch (Exception ex) {
_transactionManager.Cancel();
Logger.Error(ex, "Error while saving cloud video item with ID {0}.", part.Id);
_notifier.Error(T("Ar error occurred while saving the cloud video item:\n{1}", ex.Message));
Logger.Error(ex, "Error while saving cloud video item with ID {0}.", part.Id);
_notifier.Error(T("An error occurred while saving the cloud video item:\n{1}", ex.Message));
}
return RedirectToAction("Edit", new { id = part.Id });
@@ -168,4 +168,4 @@ namespace Orchard.Azure.MediaServices.Controllers {
ModelState.AddModelError(key, errorMessage.ToString());
}
}
}
}

View File

@@ -27,4 +27,4 @@ var Orchard;
})(Azure = Orchard.Azure || (Orchard.Azure = {}));
})(Orchard || (Orchard = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtYWRtaW4tY29tbW9uLmpzIiwiY2xvdWRtZWRpYS1hZG1pbi1jb21tb24udHMiXSwibmFtZXMiOlsiT3JjaGFyZCIsIk9yY2hhcmQuQXp1cmUiLCJPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMiLCJPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuQWRtaW4iLCJPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuQWRtaW4uQ29tbW9uIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQSw0Q0FBNEM7QUFFNUMsSUFBTyxPQUFPLENBU2I7QUFURCxXQUFPLE9BQU87SUFBQ0EsSUFBQUEsS0FBS0EsQ0FTbkJBO0lBVGNBLFdBQUFBLEtBQUtBO1FBQUNDLElBQUFBLGFBQWFBLENBU2pDQTtRQVRvQkEsV0FBQUEsYUFBYUE7WUFBQ0MsSUFBQUEsS0FBS0EsQ0FTdkNBO1lBVGtDQSxXQUFBQSxLQUFLQTtnQkFBQ0MsSUFBQUEsTUFBTUEsQ0FTOUNBO2dCQVR3Q0EsV0FBQUEsTUFBTUEsRUFBQ0EsQ0FBQ0E7b0JBQzdDQyxDQUFDQSxDQUFDQTt3QkFDRUEsQ0FBQ0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsT0FBT0EsRUFBRUEscUNBQXFDQSxFQUFFQSxVQUFTQSxDQUFDQTs0QkFDbkUsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFFcEMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Z0NBQ2pCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQzt3QkFDM0IsQ0FBQyxDQUFDQSxDQUFDQTtvQkFDUEEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQ1BBLENBQUNBLEVBVHdDRCxNQUFNQSxHQUFOQSxZQUFNQSxLQUFOQSxZQUFNQSxRQVM5Q0E7WUFBREEsQ0FBQ0EsRUFUa0NELEtBQUtBLEdBQUxBLG1CQUFLQSxLQUFMQSxtQkFBS0EsUUFTdkNBO1FBQURBLENBQUNBLEVBVG9CRCxhQUFhQSxHQUFiQSxtQkFBYUEsS0FBYkEsbUJBQWFBLFFBU2pDQTtJQUFEQSxDQUFDQSxFQVRjRCxLQUFLQSxHQUFMQSxhQUFLQSxLQUFMQSxhQUFLQSxRQVNuQkE7QUFBREEsQ0FBQ0EsRUFUTSxPQUFPLEtBQVAsT0FBTyxRQVNiIiwiZmlsZSI6ImNsb3VkbWVkaWEtYWRtaW4tY29tbW9uLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiVHlwaW5ncy9qcXVlcnkuZC50c1wiIC8+XG5cbm1vZHVsZSBPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuQWRtaW4uQ29tbW9uIHtcbiAgICAkKCgpID0+IHtcbiAgICAgICAgJChcImZvcm1cIikub24oXCJjbGlja1wiLCBcImJ1dHRvbltkYXRhLXByb21wdF0sIGFbZGF0YS1wcm9tcHRdXCIsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIHZhciBwcm9tcHQgPSAkKHRoaXMpLmRhdGEoXCJwcm9tcHRcIik7XG5cbiAgICAgICAgICAgIGlmICghY29uZmlybShwcm9tcHQpKVxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59ICJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtYWRtaW4tY29tbW9uLmpzIiwiY2xvdWRtZWRpYS1hZG1pbi1jb21tb24udHMiXSwibmFtZXMiOlsiT3JjaGFyZCIsIk9yY2hhcmQuQXp1cmUiLCJPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMiLCJPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuQWRtaW4iLCJPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuQWRtaW4uQ29tbW9uIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQSw0Q0FBNEM7QUFFNUMsSUFBTyxPQUFPLENBU2I7QUFURCxXQUFPLE9BQU87SUFBQ0EsSUFBQUEsS0FBS0EsQ0FTbkJBO0lBVGNBLFdBQUFBLEtBQUtBO1FBQUNDLElBQUFBLGFBQWFBLENBU2pDQTtRQVRvQkEsV0FBQUEsYUFBYUE7WUFBQ0MsSUFBQUEsS0FBS0EsQ0FTdkNBO1lBVGtDQSxXQUFBQSxLQUFLQTtnQkFBQ0MsSUFBQUEsTUFBTUEsQ0FTOUNBO2dCQVR3Q0EsV0FBQUEsTUFBTUEsRUFBQ0EsQ0FBQ0E7b0JBQzdDQyxDQUFDQSxDQUFDQTt3QkFDRUEsQ0FBQ0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsT0FBT0EsRUFBRUEscUNBQXFDQSxFQUFFQSxVQUFTQSxDQUFDQTs0QkFDbkUsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFFcEMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Z0NBQ2pCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQzt3QkFDM0IsQ0FBQyxDQUFDQSxDQUFDQTtvQkFDUEEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQ1BBLENBQUNBLEVBVHdDRCxNQUFNQSxHQUFOQSxZQUFNQSxLQUFOQSxZQUFNQSxRQVM5Q0E7WUFBREEsQ0FBQ0EsRUFUa0NELEtBQUtBLEdBQUxBLG1CQUFLQSxLQUFMQSxtQkFBS0EsUUFTdkNBO1FBQURBLENBQUNBLEVBVG9CRCxhQUFhQSxHQUFiQSxtQkFBYUEsS0FBYkEsbUJBQWFBLFFBU2pDQTtJQUFEQSxDQUFDQSxFQVRjRCxLQUFLQSxHQUFMQSxhQUFLQSxLQUFMQSxhQUFLQSxRQVNuQkE7QUFBREEsQ0FBQ0EsRUFUTSxPQUFPLEtBQVAsT0FBTyxRQVNiIiwiZmlsZSI6ImNsb3VkbWVkaWEtYWRtaW4tY29tbW9uLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiVHlwaW5ncy9qcXVlcnkuZC50c1wiIC8+XHJcblxyXG5tb2R1bGUgT3JjaGFyZC5BenVyZS5NZWRpYVNlcnZpY2VzLkFkbWluLkNvbW1vbiB7XHJcbiAgICAkKCgpID0+IHtcclxuICAgICAgICAkKFwiZm9ybVwiKS5vbihcImNsaWNrXCIsIFwiYnV0dG9uW2RhdGEtcHJvbXB0XSwgYVtkYXRhLXByb21wdF1cIiwgZnVuY3Rpb24oZSkge1xyXG4gICAgICAgICAgICB2YXIgcHJvbXB0ID0gJCh0aGlzKS5kYXRhKFwicHJvbXB0XCIpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFjb25maXJtKHByb21wdCkpXHJcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxufSAiXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=

File diff suppressed because one or more lines are too long

View File

@@ -35,4 +35,4 @@ var Orchard;
})(Azure = Orchard.Azure || (Orchard.Azure = {}));
})(Orchard || (Orchard = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtYXV0b3JlZnJlc2guanMiLCJjbG91ZG1lZGlhLWF1dG9yZWZyZXNoLnRzIl0sIm5hbWVzIjpbIk9yY2hhcmQiLCJPcmNoYXJkLkF6dXJlIiwiT3JjaGFyZC5BenVyZS5NZWRpYVNlcnZpY2VzIiwiT3JjaGFyZC5BenVyZS5NZWRpYVNlcnZpY2VzLkF1dG9SZWZyZXNoIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQSw0Q0FBNEM7QUFFNUMsSUFBTyxPQUFPLENBcUJiO0FBckJELFdBQU8sT0FBTztJQUFDQSxJQUFBQSxLQUFLQSxDQXFCbkJBO0lBckJjQSxXQUFBQSxLQUFLQTtRQUFDQyxJQUFBQSxhQUFhQSxDQXFCakNBO1FBckJvQkEsV0FBQUEsYUFBYUE7WUFBQ0MsSUFBQUEsV0FBV0EsQ0FxQjdDQTtZQXJCa0NBLFdBQUFBLFdBQVdBLEVBQUNBLENBQUNBO2dCQUM1Q0MsaUNBQWlDQTtnQkFDakNBLENBQUNBLENBQUNBO29CQUNFQSxDQUFDQSxDQUFDQSxvQkFBb0JBLENBQUNBLENBQUNBLElBQUlBLENBQUNBO3dCQUN6QixJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ25CLElBQUksTUFBTSxHQUFHOzRCQUNULElBQUksU0FBUyxHQUFHLElBQUksQ0FBQzs0QkFDckIsSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs0QkFFeEMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQ0FDSCxHQUFHLEVBQUUsR0FBRztnQ0FDUixLQUFLLEVBQUUsS0FBSzs2QkFDZixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUEsSUFBSTtnQ0FDUixTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dDQUNyQixVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDOzRCQUM3QixDQUFDLENBQUMsQ0FBQzt3QkFDUCxDQUFDLENBQUM7d0JBRUYsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDN0IsQ0FBQyxDQUFDQSxDQUFDQTtnQkFDUEEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDUEEsQ0FBQ0EsRUFyQmtDRCxXQUFXQSxHQUFYQSx5QkFBV0EsS0FBWEEseUJBQVdBLFFBcUI3Q0E7UUFBREEsQ0FBQ0EsRUFyQm9CRCxhQUFhQSxHQUFiQSxtQkFBYUEsS0FBYkEsbUJBQWFBLFFBcUJqQ0E7SUFBREEsQ0FBQ0EsRUFyQmNELEtBQUtBLEdBQUxBLGFBQUtBLEtBQUxBLGFBQUtBLFFBcUJuQkE7QUFBREEsQ0FBQ0EsRUFyQk0sT0FBTyxLQUFQLE9BQU8sUUFxQmIiLCJmaWxlIjoiY2xvdWRtZWRpYS1hdXRvcmVmcmVzaC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlR5cGluZ3MvanF1ZXJ5LmQudHNcIiAvPlxuXG5tb2R1bGUgT3JjaGFyZC5BenVyZS5NZWRpYVNlcnZpY2VzLkF1dG9SZWZyZXNoIHtcbiAgICAvLyBQZXJpb2RpY2FsbHkgcmVmcmVzaCBlbGVtZW50cy5cbiAgICAkKCgpID0+IHtcbiAgICAgICAgJChcIltkYXRhLXJlZnJlc2gtdXJsXVwiKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzZWxmID0gJCh0aGlzKTtcbiAgICAgICAgICAgIHZhciB1cGRhdGUgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IHNlbGY7XG4gICAgICAgICAgICAgICAgdmFyIHVybCA9IGNvbnRhaW5lci5kYXRhKFwicmVmcmVzaC11cmxcIik7XG5cbiAgICAgICAgICAgICAgICAkLmFqYXgoe1xuICAgICAgICAgICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgICAgICAgICAgY2FjaGU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSkudGhlbihodG1sID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmh0bWwoaHRtbCk7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodXBkYXRlLCA1MDAwKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQodXBkYXRlLCA1MDAwKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59Il0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtYXV0b3JlZnJlc2guanMiLCJjbG91ZG1lZGlhLWF1dG9yZWZyZXNoLnRzIl0sIm5hbWVzIjpbIk9yY2hhcmQiLCJPcmNoYXJkLkF6dXJlIiwiT3JjaGFyZC5BenVyZS5NZWRpYVNlcnZpY2VzIiwiT3JjaGFyZC5BenVyZS5NZWRpYVNlcnZpY2VzLkF1dG9SZWZyZXNoIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQSw0Q0FBNEM7QUFFNUMsSUFBTyxPQUFPLENBcUJiO0FBckJELFdBQU8sT0FBTztJQUFDQSxJQUFBQSxLQUFLQSxDQXFCbkJBO0lBckJjQSxXQUFBQSxLQUFLQTtRQUFDQyxJQUFBQSxhQUFhQSxDQXFCakNBO1FBckJvQkEsV0FBQUEsYUFBYUE7WUFBQ0MsSUFBQUEsV0FBV0EsQ0FxQjdDQTtZQXJCa0NBLFdBQUFBLFdBQVdBLEVBQUNBLENBQUNBO2dCQUM1Q0MsaUNBQWlDQTtnQkFDakNBLENBQUNBLENBQUNBO29CQUNFQSxDQUFDQSxDQUFDQSxvQkFBb0JBLENBQUNBLENBQUNBLElBQUlBLENBQUNBO3dCQUN6QixJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ25CLElBQUksTUFBTSxHQUFHOzRCQUNULElBQUksU0FBUyxHQUFHLElBQUksQ0FBQzs0QkFDckIsSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs0QkFFeEMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQ0FDSCxHQUFHLEVBQUUsR0FBRztnQ0FDUixLQUFLLEVBQUUsS0FBSzs2QkFDZixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUEsSUFBSTtnQ0FDUixTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dDQUNyQixVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDOzRCQUM3QixDQUFDLENBQUMsQ0FBQzt3QkFDUCxDQUFDLENBQUM7d0JBRUYsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDN0IsQ0FBQyxDQUFDQSxDQUFDQTtnQkFDUEEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDUEEsQ0FBQ0EsRUFyQmtDRCxXQUFXQSxHQUFYQSx5QkFBV0EsS0FBWEEseUJBQVdBLFFBcUI3Q0E7UUFBREEsQ0FBQ0EsRUFyQm9CRCxhQUFhQSxHQUFiQSxtQkFBYUEsS0FBYkEsbUJBQWFBLFFBcUJqQ0E7SUFBREEsQ0FBQ0EsRUFyQmNELEtBQUtBLEdBQUxBLGFBQUtBLEtBQUxBLGFBQUtBLFFBcUJuQkE7QUFBREEsQ0FBQ0EsRUFyQk0sT0FBTyxLQUFQLE9BQU8sUUFxQmIiLCJmaWxlIjoiY2xvdWRtZWRpYS1hdXRvcmVmcmVzaC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlR5cGluZ3MvanF1ZXJ5LmQudHNcIiAvPlxyXG5cclxubW9kdWxlIE9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5BdXRvUmVmcmVzaCB7XHJcbiAgICAvLyBQZXJpb2RpY2FsbHkgcmVmcmVzaCBlbGVtZW50cy5cclxuICAgICQoKCkgPT4ge1xyXG4gICAgICAgICQoXCJbZGF0YS1yZWZyZXNoLXVybF1cIikuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHZhciBzZWxmID0gJCh0aGlzKTtcclxuICAgICAgICAgICAgdmFyIHVwZGF0ZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHZhciBjb250YWluZXIgPSBzZWxmO1xyXG4gICAgICAgICAgICAgICAgdmFyIHVybCA9IGNvbnRhaW5lci5kYXRhKFwicmVmcmVzaC11cmxcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgICAgICB1cmw6IHVybCxcclxuICAgICAgICAgICAgICAgICAgICBjYWNoZTogZmFsc2VcclxuICAgICAgICAgICAgICAgIH0pLnRoZW4oaHRtbCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmh0bWwoaHRtbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCh1cGRhdGUsIDUwMDApO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KHVwZGF0ZSwgNTAwMCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxufSJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==

View File

@@ -45,4 +45,4 @@ var Orchard;
})(Azure = Orchard.Azure || (Orchard.Azure = {}));
})(Orchard || (Orchard = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtZWRpdC1hc3NldC12aWRlby5qcyIsImNsb3VkbWVkaWEtZWRpdC1hc3NldC12aWRlby50cyJdLCJuYW1lcyI6WyJPcmNoYXJkIiwiT3JjaGFyZC5BenVyZSIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcyIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5Bc3NldEVkaXQiLCJPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuQXNzZXRFZGl0LlZpZGVvIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQSw0Q0FBNEM7QUFDNUMsOENBQThDO0FBRTlDLElBQU8sT0FBTyxDQTZCYjtBQTdCRCxXQUFPLE9BQU87SUFBQ0EsSUFBQUEsS0FBS0EsQ0E2Qm5CQTtJQTdCY0EsV0FBQUEsS0FBS0E7UUFBQ0MsSUFBQUEsYUFBYUEsQ0E2QmpDQTtRQTdCb0JBLFdBQUFBLGFBQWFBO1lBQUNDLElBQUFBLFNBQVNBLENBNkIzQ0E7WUE3QmtDQSxXQUFBQSxTQUFTQTtnQkFBQ0MsSUFBQUEsS0FBS0EsQ0E2QmpEQTtnQkE3QjRDQSxXQUFBQSxLQUFLQSxFQUFDQSxDQUFDQTtvQkFDaERDLENBQUNBLENBQUNBO3dCQUNFLElBQUksUUFBUSxHQUFRLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO3dCQUUvQyxRQUFRLENBQUMsTUFBTSxDQUFDOzRCQUNaLE1BQU0sRUFBRTtnQ0FDSixXQUFXLEVBQUUsQ0FBQztnQ0FDZCxnQkFBZ0IsRUFBRSxJQUFJO2dDQUN0QixRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFOzZCQUNoQzs0QkFDRCxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDO3lCQUNuQyxDQUFDLENBQUM7d0JBRUgsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsVUFBUyxDQUFDOzRCQUNuQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUNoQyxDQUFDLENBQUMsQ0FBQzt3QkFFSCxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7NEJBQ3RDLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7d0JBQ2pDLENBQUMsQ0FBQyxDQUFDO3dCQUVILCtDQUErQzt3QkFDL0Msd0RBQXdEO3dCQUN4RCxzQ0FBc0M7d0JBQ3RDLHVCQUF1Qjt3QkFDdkIscUNBQXFDO3dCQUNyQyxPQUFPO3dCQUNQLEtBQUs7b0JBQ1QsQ0FBQyxDQUFDQSxDQUFDQTtnQkFDUEEsQ0FBQ0EsRUE3QjRDRCxLQUFLQSxHQUFMQSxlQUFLQSxLQUFMQSxlQUFLQSxRQTZCakRBO1lBQURBLENBQUNBLEVBN0JrQ0QsU0FBU0EsR0FBVEEsdUJBQVNBLEtBQVRBLHVCQUFTQSxRQTZCM0NBO1FBQURBLENBQUNBLEVBN0JvQkQsYUFBYUEsR0FBYkEsbUJBQWFBLEtBQWJBLG1CQUFhQSxRQTZCakNBO0lBQURBLENBQUNBLEVBN0JjRCxLQUFLQSxHQUFMQSxhQUFLQSxLQUFMQSxhQUFLQSxRQTZCbkJBO0FBQURBLENBQUNBLEVBN0JNLE9BQU8sS0FBUCxPQUFPLFFBNkJiIiwiZmlsZSI6ImNsb3VkbWVkaWEtZWRpdC1hc3NldC12aWRlby5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlR5cGluZ3MvanF1ZXJ5LmQudHNcIiAvPlxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlR5cGluZ3MvanF1ZXJ5dWkuZC50c1wiIC8+XG5cbm1vZHVsZSBPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuQXNzZXRFZGl0LlZpZGVvIHtcbiAgICAkKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRyZWVWaWV3OiBhbnkgPSAkKFwiI2Fzc2V0LWZpbGVzLXRyZWV2aWV3XCIpO1xuXG4gICAgICAgIHRyZWVWaWV3LmpzdHJlZSh7XG4gICAgICAgICAgICBcImNvcmVcIjoge1xuICAgICAgICAgICAgICAgIFwiYW5pbWF0aW9uXCI6IDAsXG4gICAgICAgICAgICAgICAgXCJjaGVja19jYWxsYmFja1wiOiB0cnVlLFxuICAgICAgICAgICAgICAgIFwidGhlbWVzXCI6IHsgXCJzdHJpcGVzXCI6IHRydWUgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInBsdWdpbnNcIjogW1wic3RhdGVcIiwgXCJ3aG9sZXJvd1wiXVxuICAgICAgICB9KTtcblxuICAgICAgICAkKFwiLmV4cGFuZC1hbGxcIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICB0cmVlVmlldy5qc3RyZWUoJ29wZW5fYWxsJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgICQoXCIuY29sbGFwc2UtYWxsXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHRyZWVWaWV3LmpzdHJlZSgnY2xvc2VfYWxsJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFRPRE86IE1ha2UgbGlua3Mgd29yayAoUHJpdmF0ZS9QdWJsaWMgVVJMUykuXG4gICAgICAgIC8vdHJlZVZpZXcub24oXCJzZWxlY3Rfbm9kZS5qc3RyZWVcIiwgZnVuY3Rpb24gKGUsIGRhdGEpIHtcbiAgICAgICAgLy8gICAgdmFyIHVybCA9IGRhdGEubm9kZS5hX2F0dHIuaHJlZjtcbiAgICAgICAgLy8gICAgaWYgKHVybCAhPSBcIiNcIikge1xuICAgICAgICAvLyAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XG4gICAgICAgIC8vICAgIH1cbiAgICAgICAgLy99KTtcbiAgICB9KTtcbn0iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtZWRpdC1hc3NldC12aWRlby5qcyIsImNsb3VkbWVkaWEtZWRpdC1hc3NldC12aWRlby50cyJdLCJuYW1lcyI6WyJPcmNoYXJkIiwiT3JjaGFyZC5BenVyZSIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcyIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5Bc3NldEVkaXQiLCJPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuQXNzZXRFZGl0LlZpZGVvIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQSw0Q0FBNEM7QUFDNUMsOENBQThDO0FBRTlDLElBQU8sT0FBTyxDQTZCYjtBQTdCRCxXQUFPLE9BQU87SUFBQ0EsSUFBQUEsS0FBS0EsQ0E2Qm5CQTtJQTdCY0EsV0FBQUEsS0FBS0E7UUFBQ0MsSUFBQUEsYUFBYUEsQ0E2QmpDQTtRQTdCb0JBLFdBQUFBLGFBQWFBO1lBQUNDLElBQUFBLFNBQVNBLENBNkIzQ0E7WUE3QmtDQSxXQUFBQSxTQUFTQTtnQkFBQ0MsSUFBQUEsS0FBS0EsQ0E2QmpEQTtnQkE3QjRDQSxXQUFBQSxLQUFLQSxFQUFDQSxDQUFDQTtvQkFDaERDLENBQUNBLENBQUNBO3dCQUNFLElBQUksUUFBUSxHQUFRLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO3dCQUUvQyxRQUFRLENBQUMsTUFBTSxDQUFDOzRCQUNaLE1BQU0sRUFBRTtnQ0FDSixXQUFXLEVBQUUsQ0FBQztnQ0FDZCxnQkFBZ0IsRUFBRSxJQUFJO2dDQUN0QixRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFOzZCQUNoQzs0QkFDRCxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDO3lCQUNuQyxDQUFDLENBQUM7d0JBRUgsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsVUFBUyxDQUFDOzRCQUNuQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUNoQyxDQUFDLENBQUMsQ0FBQzt3QkFFSCxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7NEJBQ3RDLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7d0JBQ2pDLENBQUMsQ0FBQyxDQUFDO3dCQUVILCtDQUErQzt3QkFDL0Msd0RBQXdEO3dCQUN4RCxzQ0FBc0M7d0JBQ3RDLHVCQUF1Qjt3QkFDdkIscUNBQXFDO3dCQUNyQyxPQUFPO3dCQUNQLEtBQUs7b0JBQ1QsQ0FBQyxDQUFDQSxDQUFDQTtnQkFDUEEsQ0FBQ0EsRUE3QjRDRCxLQUFLQSxHQUFMQSxlQUFLQSxLQUFMQSxlQUFLQSxRQTZCakRBO1lBQURBLENBQUNBLEVBN0JrQ0QsU0FBU0EsR0FBVEEsdUJBQVNBLEtBQVRBLHVCQUFTQSxRQTZCM0NBO1FBQURBLENBQUNBLEVBN0JvQkQsYUFBYUEsR0FBYkEsbUJBQWFBLEtBQWJBLG1CQUFhQSxRQTZCakNBO0lBQURBLENBQUNBLEVBN0JjRCxLQUFLQSxHQUFMQSxhQUFLQSxLQUFMQSxhQUFLQSxRQTZCbkJBO0FBQURBLENBQUNBLEVBN0JNLE9BQU8sS0FBUCxPQUFPLFFBNkJiIiwiZmlsZSI6ImNsb3VkbWVkaWEtZWRpdC1hc3NldC12aWRlby5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlR5cGluZ3MvanF1ZXJ5LmQudHNcIiAvPlxyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiVHlwaW5ncy9qcXVlcnl1aS5kLnRzXCIgLz5cclxuXHJcbm1vZHVsZSBPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuQXNzZXRFZGl0LlZpZGVvIHtcclxuICAgICQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciB0cmVlVmlldzogYW55ID0gJChcIiNhc3NldC1maWxlcy10cmVldmlld1wiKTtcclxuXHJcbiAgICAgICAgdHJlZVZpZXcuanN0cmVlKHtcclxuICAgICAgICAgICAgXCJjb3JlXCI6IHtcclxuICAgICAgICAgICAgICAgIFwiYW5pbWF0aW9uXCI6IDAsXHJcbiAgICAgICAgICAgICAgICBcImNoZWNrX2NhbGxiYWNrXCI6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBcInRoZW1lc1wiOiB7IFwic3RyaXBlc1wiOiB0cnVlIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIFwicGx1Z2luc1wiOiBbXCJzdGF0ZVwiLCBcIndob2xlcm93XCJdXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICQoXCIuZXhwYW5kLWFsbFwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgdHJlZVZpZXcuanN0cmVlKCdvcGVuX2FsbCcpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAkKFwiLmNvbGxhcHNlLWFsbFwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgIHRyZWVWaWV3LmpzdHJlZSgnY2xvc2VfYWxsJyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIFRPRE86IE1ha2UgbGlua3Mgd29yayAoUHJpdmF0ZS9QdWJsaWMgVVJMUykuXHJcbiAgICAgICAgLy90cmVlVmlldy5vbihcInNlbGVjdF9ub2RlLmpzdHJlZVwiLCBmdW5jdGlvbiAoZSwgZGF0YSkge1xyXG4gICAgICAgIC8vICAgIHZhciB1cmwgPSBkYXRhLm5vZGUuYV9hdHRyLmhyZWY7XHJcbiAgICAgICAgLy8gICAgaWYgKHVybCAhPSBcIiNcIikge1xyXG4gICAgICAgIC8vICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgICAgICAvLyAgICB9XHJcbiAgICAgICAgLy99KTtcclxuICAgIH0pO1xyXG59Il0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9

View File

@@ -28,4 +28,4 @@ var Orchard;
})(Azure = Orchard.Azure || (Orchard.Azure = {}));
})(Orchard || (Orchard = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtZWRpdC1hc3NldC5qcyIsImNsb3VkbWVkaWEtZWRpdC1hc3NldC50cyJdLCJuYW1lcyI6WyJPcmNoYXJkIiwiT3JjaGFyZC5BenVyZSIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcyIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5Bc3NldEVkaXQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxBQ0xBLDRDQUE0QztBQUM1Qyw4Q0FBOEM7QUFFOUMsSUFBTyxPQUFPLENBV2I7QUFYRCxXQUFPLE9BQU87SUFBQ0EsSUFBQUEsS0FBS0EsQ0FXbkJBO0lBWGNBLFdBQUFBLEtBQUtBO1FBQUNDLElBQUFBLGFBQWFBLENBV2pDQTtRQVhvQkEsV0FBQUEsYUFBYUE7WUFBQ0MsSUFBQUEsU0FBU0EsQ0FXM0NBO1lBWGtDQSxXQUFBQSxTQUFTQSxFQUFDQSxDQUFDQTtnQkFDMUNDLENBQUNBLENBQUNBO29CQUNFLElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDMUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQzt3QkFDWixRQUFRLEVBQUU7NEJBQ04sRUFBRSxDQUFDLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUM7Z0NBQ3JDLFlBQVksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQzt3QkFDdEYsQ0FBQzt3QkFDRCxNQUFNLEVBQUUsWUFBWSxJQUFJLFlBQVksQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLElBQUk7cUJBQ2pHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDZCxDQUFDLENBQUNBLENBQUNBO1lBQ1BBLENBQUNBLEVBWGtDRCxTQUFTQSxHQUFUQSx1QkFBU0EsS0FBVEEsdUJBQVNBLFFBVzNDQTtRQUFEQSxDQUFDQSxFQVhvQkQsYUFBYUEsR0FBYkEsbUJBQWFBLEtBQWJBLG1CQUFhQSxRQVdqQ0E7SUFBREEsQ0FBQ0EsRUFYY0QsS0FBS0EsR0FBTEEsYUFBS0EsS0FBTEEsYUFBS0EsUUFXbkJBO0FBQURBLENBQUNBLEVBWE0sT0FBTyxLQUFQLE9BQU8sUUFXYiIsImZpbGUiOiJjbG91ZG1lZGlhLWVkaXQtYXNzZXQuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJUeXBpbmdzL2pxdWVyeS5kLnRzXCIgLz5cbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJUeXBpbmdzL2pxdWVyeXVpLmQudHNcIiAvPlxuXG5tb2R1bGUgT3JjaGFyZC5BenVyZS5NZWRpYVNlcnZpY2VzLkFzc2V0RWRpdCB7XG4gICAgJChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGxvY2FsU3RvcmFnZSA9IHdpbmRvd1tcImxvY2FsU3RvcmFnZVwiXTtcbiAgICAgICAgJChcIiN0YWJzXCIpLnRhYnMoe1xuICAgICAgICAgICAgYWN0aXZhdGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxTdG9yYWdlICYmIGxvY2FsU3RvcmFnZS5zZXRJdGVtKVxuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInNlbGVjdGVkQXNzZXRUYWJcIiwgJChcIiN0YWJzXCIpLnRhYnMoXCJvcHRpb25cIiwgXCJhY3RpdmVcIikpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjdGl2ZTogbG9jYWxTdG9yYWdlICYmIGxvY2FsU3RvcmFnZS5nZXRJdGVtID8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJzZWxlY3RlZEFzc2V0VGFiXCIpIDogbnVsbFxuICAgICAgICB9KS5zaG93KCk7IFxuICAgIH0pO1xufSJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtZWRpdC1hc3NldC5qcyIsImNsb3VkbWVkaWEtZWRpdC1hc3NldC50cyJdLCJuYW1lcyI6WyJPcmNoYXJkIiwiT3JjaGFyZC5BenVyZSIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcyIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5Bc3NldEVkaXQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxBQ0xBLDRDQUE0QztBQUM1Qyw4Q0FBOEM7QUFFOUMsSUFBTyxPQUFPLENBV2I7QUFYRCxXQUFPLE9BQU87SUFBQ0EsSUFBQUEsS0FBS0EsQ0FXbkJBO0lBWGNBLFdBQUFBLEtBQUtBO1FBQUNDLElBQUFBLGFBQWFBLENBV2pDQTtRQVhvQkEsV0FBQUEsYUFBYUE7WUFBQ0MsSUFBQUEsU0FBU0EsQ0FXM0NBO1lBWGtDQSxXQUFBQSxTQUFTQSxFQUFDQSxDQUFDQTtnQkFDMUNDLENBQUNBLENBQUNBO29CQUNFLElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDMUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQzt3QkFDWixRQUFRLEVBQUU7NEJBQ04sRUFBRSxDQUFDLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUM7Z0NBQ3JDLFlBQVksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQzt3QkFDdEYsQ0FBQzt3QkFDRCxNQUFNLEVBQUUsWUFBWSxJQUFJLFlBQVksQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLElBQUk7cUJBQ2pHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDZCxDQUFDLENBQUNBLENBQUNBO1lBQ1BBLENBQUNBLEVBWGtDRCxTQUFTQSxHQUFUQSx1QkFBU0EsS0FBVEEsdUJBQVNBLFFBVzNDQTtRQUFEQSxDQUFDQSxFQVhvQkQsYUFBYUEsR0FBYkEsbUJBQWFBLEtBQWJBLG1CQUFhQSxRQVdqQ0E7SUFBREEsQ0FBQ0EsRUFYY0QsS0FBS0EsR0FBTEEsYUFBS0EsS0FBTEEsYUFBS0EsUUFXbkJBO0FBQURBLENBQUNBLEVBWE0sT0FBTyxLQUFQLE9BQU8sUUFXYiIsImZpbGUiOiJjbG91ZG1lZGlhLWVkaXQtYXNzZXQuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJUeXBpbmdzL2pxdWVyeS5kLnRzXCIgLz5cclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIlR5cGluZ3MvanF1ZXJ5dWkuZC50c1wiIC8+XHJcblxyXG5tb2R1bGUgT3JjaGFyZC5BenVyZS5NZWRpYVNlcnZpY2VzLkFzc2V0RWRpdCB7XHJcbiAgICAkKGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHZhciBsb2NhbFN0b3JhZ2UgPSB3aW5kb3dbXCJsb2NhbFN0b3JhZ2VcIl07XHJcbiAgICAgICAgJChcIiN0YWJzXCIpLnRhYnMoe1xyXG4gICAgICAgICAgICBhY3RpdmF0ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsU3RvcmFnZSAmJiBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSlcclxuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInNlbGVjdGVkQXNzZXRUYWJcIiwgJChcIiN0YWJzXCIpLnRhYnMoXCJvcHRpb25cIiwgXCJhY3RpdmVcIikpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhY3RpdmU6IGxvY2FsU3RvcmFnZSAmJiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSA/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwic2VsZWN0ZWRBc3NldFRhYlwiKSA6IG51bGxcclxuICAgICAgICB9KS5zaG93KCk7IFxyXG4gICAgfSk7XHJcbn0iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=

View File

@@ -39,4 +39,4 @@ var Orchard;
})(Azure = Orchard.Azure || (Orchard.Azure = {}));
})(Orchard || (Orchard = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtZWRpdC1jbG91ZHZpZGVvcGFydC5qcyIsImNsb3VkbWVkaWEtZWRpdC1jbG91ZHZpZGVvcGFydC50cyJdLCJuYW1lcyI6WyJPcmNoYXJkIiwiT3JjaGFyZC5BenVyZSIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcyIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5DbG91ZFZpZGVvRWRpdCIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5DbG91ZFZpZGVvRWRpdC5oYXNDb3JzU3VwcG9ydCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEFDTEEsNENBQTRDO0FBQzVDLDhDQUE4QztBQUU5QyxJQUFPLE9BQU8sQ0F3QmI7QUF4QkQsV0FBTyxPQUFPO0lBQUNBLElBQUFBLEtBQUtBLENBd0JuQkE7SUF4QmNBLFdBQUFBLEtBQUtBO1FBQUNDLElBQUFBLGFBQWFBLENBd0JqQ0E7UUF4Qm9CQSxXQUFBQSxhQUFhQTtZQUFDQyxJQUFBQSxjQUFjQSxDQXdCaERBO1lBeEJrQ0EsV0FBQUEsY0FBY0EsRUFBQ0EsQ0FBQ0E7Z0JBQy9DQztvQkFDSUMsTUFBTUEsQ0FBQ0EsaUJBQWlCQSxJQUFJQSxJQUFJQSxjQUFjQSxFQUFFQSxDQUFDQTtnQkFDckRBLENBQUNBO2dCQUVERCxDQUFDQSxDQUFDQTtvQkFDRSxJQUFJLGFBQWEsR0FBRyxjQUFjLEVBQUUsQ0FBQztvQkFFckMsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQzt3QkFDaEIscUNBQXNCLEVBQUUsQ0FBQztvQkFDN0IsQ0FBQztvQkFBQyxJQUFJLENBQUMsQ0FBQzt3QkFDSixzQ0FBdUIsRUFBRSxDQUFDO29CQUM5QixDQUFDO29CQUVELElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxVQUFVLEdBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO29CQUNuRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDO3dCQUNaLFFBQVEsRUFBRTs0QkFDTixFQUFFLENBQUMsQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQztnQ0FDckMsWUFBWSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO3dCQUMzRixDQUFDO3dCQUNELE1BQU0sRUFBRSxDQUFDLFVBQVUsSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLEdBQUcsSUFBSTtxQkFDckgsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNkLENBQUMsQ0FBQ0EsQ0FBQ0E7WUFDUEEsQ0FBQ0EsRUF4QmtDRCxjQUFjQSxHQUFkQSw0QkFBY0EsS0FBZEEsNEJBQWNBLFFBd0JoREE7UUFBREEsQ0FBQ0EsRUF4Qm9CRCxhQUFhQSxHQUFiQSxtQkFBYUEsS0FBYkEsbUJBQWFBLFFBd0JqQ0E7SUFBREEsQ0FBQ0EsRUF4QmNELEtBQUtBLEdBQUxBLGFBQUtBLEtBQUxBLGFBQUtBLFFBd0JuQkE7QUFBREEsQ0FBQ0EsRUF4Qk0sT0FBTyxLQUFQLE9BQU8sUUF3QmIiLCJmaWxlIjoiY2xvdWRtZWRpYS1lZGl0LWNsb3VkdmlkZW9wYXJ0LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiVHlwaW5ncy9qcXVlcnkuZC50c1wiIC8+XG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiVHlwaW5ncy9qcXVlcnl1aS5kLnRzXCIgLz5cblxubW9kdWxlIE9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5DbG91ZFZpZGVvRWRpdCB7XG4gICAgZnVuY3Rpb24gaGFzQ29yc1N1cHBvcnQoKSB7XG4gICAgICAgIHJldHVybiAnd2l0aENyZWRlbnRpYWxzJyBpbiBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICB9XG5cbiAgICAkKGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgY29yc1N1cHBvcnRlZCA9IGhhc0NvcnNTdXBwb3J0KCk7XG5cbiAgICAgICAgaWYgKGNvcnNTdXBwb3J0ZWQpIHtcbiAgICAgICAgICAgIGluaXRpYWxpemVVcGxvYWREaXJlY3QoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGluaXRpYWxpemVVcGxvYWRQcm94aWVkKCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbG9jYWxTdG9yYWdlID0gd2luZG93W1wibG9jYWxTdG9yYWdlXCJdO1xuICAgICAgICB2YXIgaXNDcmVhdGluZzogYm9vbGVhbiA9ICQoXCIjdGFic1wiKS5kYXRhKFwiY2xvdWR2aWRlby1pc2NyZWF0aW5nXCIpO1xuICAgICAgICAkKFwiI3RhYnNcIikudGFicyh7XG4gICAgICAgICAgICBhY3RpdmF0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbFN0b3JhZ2UgJiYgbG9jYWxTdG9yYWdlLnNldEl0ZW0pXG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwic2VsZWN0ZWRDbG91ZFZpZGVvVGFiXCIsICQoXCIjdGFic1wiKS50YWJzKFwib3B0aW9uXCIsIFwiYWN0aXZlXCIpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhY3RpdmU6ICFpc0NyZWF0aW5nICYmIGxvY2FsU3RvcmFnZSAmJiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSA/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwic2VsZWN0ZWRDbG91ZFZpZGVvVGFiXCIpIDogbnVsbFxuICAgICAgICB9KS5zaG93KCk7XG4gICAgfSk7XG59Il0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtZWRpdC1jbG91ZHZpZGVvcGFydC5qcyIsImNsb3VkbWVkaWEtZWRpdC1jbG91ZHZpZGVvcGFydC50cyJdLCJuYW1lcyI6WyJPcmNoYXJkIiwiT3JjaGFyZC5BenVyZSIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcyIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5DbG91ZFZpZGVvRWRpdCIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5DbG91ZFZpZGVvRWRpdC5oYXNDb3JzU3VwcG9ydCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEFDTEEsNENBQTRDO0FBQzVDLDhDQUE4QztBQUU5QyxJQUFPLE9BQU8sQ0F3QmI7QUF4QkQsV0FBTyxPQUFPO0lBQUNBLElBQUFBLEtBQUtBLENBd0JuQkE7SUF4QmNBLFdBQUFBLEtBQUtBO1FBQUNDLElBQUFBLGFBQWFBLENBd0JqQ0E7UUF4Qm9CQSxXQUFBQSxhQUFhQTtZQUFDQyxJQUFBQSxjQUFjQSxDQXdCaERBO1lBeEJrQ0EsV0FBQUEsY0FBY0EsRUFBQ0EsQ0FBQ0E7Z0JBQy9DQztvQkFDSUMsTUFBTUEsQ0FBQ0EsaUJBQWlCQSxJQUFJQSxJQUFJQSxjQUFjQSxFQUFFQSxDQUFDQTtnQkFDckRBLENBQUNBO2dCQUVERCxDQUFDQSxDQUFDQTtvQkFDRSxJQUFJLGFBQWEsR0FBRyxjQUFjLEVBQUUsQ0FBQztvQkFFckMsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQzt3QkFDaEIscUNBQXNCLEVBQUUsQ0FBQztvQkFDN0IsQ0FBQztvQkFBQyxJQUFJLENBQUMsQ0FBQzt3QkFDSixzQ0FBdUIsRUFBRSxDQUFDO29CQUM5QixDQUFDO29CQUVELElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxVQUFVLEdBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO29CQUNuRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDO3dCQUNaLFFBQVEsRUFBRTs0QkFDTixFQUFFLENBQUMsQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQztnQ0FDckMsWUFBWSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO3dCQUMzRixDQUFDO3dCQUNELE1BQU0sRUFBRSxDQUFDLFVBQVUsSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLEdBQUcsSUFBSTtxQkFDckgsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNkLENBQUMsQ0FBQ0EsQ0FBQ0E7WUFDUEEsQ0FBQ0EsRUF4QmtDRCxjQUFjQSxHQUFkQSw0QkFBY0EsS0FBZEEsNEJBQWNBLFFBd0JoREE7UUFBREEsQ0FBQ0EsRUF4Qm9CRCxhQUFhQSxHQUFiQSxtQkFBYUEsS0FBYkEsbUJBQWFBLFFBd0JqQ0E7SUFBREEsQ0FBQ0EsRUF4QmNELEtBQUtBLEdBQUxBLGFBQUtBLEtBQUxBLGFBQUtBLFFBd0JuQkE7QUFBREEsQ0FBQ0EsRUF4Qk0sT0FBTyxLQUFQLE9BQU8sUUF3QmIiLCJmaWxlIjoiY2xvdWRtZWRpYS1lZGl0LWNsb3VkdmlkZW9wYXJ0LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiVHlwaW5ncy9qcXVlcnkuZC50c1wiIC8+XHJcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJUeXBpbmdzL2pxdWVyeXVpLmQudHNcIiAvPlxyXG5cclxubW9kdWxlIE9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5DbG91ZFZpZGVvRWRpdCB7XHJcbiAgICBmdW5jdGlvbiBoYXNDb3JzU3VwcG9ydCgpIHtcclxuICAgICAgICByZXR1cm4gJ3dpdGhDcmVkZW50aWFscycgaW4gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgJChmdW5jdGlvbigpIHtcclxuICAgICAgICB2YXIgY29yc1N1cHBvcnRlZCA9IGhhc0NvcnNTdXBwb3J0KCk7XHJcblxyXG4gICAgICAgIGlmIChjb3JzU3VwcG9ydGVkKSB7XHJcbiAgICAgICAgICAgIGluaXRpYWxpemVVcGxvYWREaXJlY3QoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpbml0aWFsaXplVXBsb2FkUHJveGllZCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIGxvY2FsU3RvcmFnZSA9IHdpbmRvd1tcImxvY2FsU3RvcmFnZVwiXTtcclxuICAgICAgICB2YXIgaXNDcmVhdGluZzogYm9vbGVhbiA9ICQoXCIjdGFic1wiKS5kYXRhKFwiY2xvdWR2aWRlby1pc2NyZWF0aW5nXCIpO1xyXG4gICAgICAgICQoXCIjdGFic1wiKS50YWJzKHtcclxuICAgICAgICAgICAgYWN0aXZhdGU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGlmIChsb2NhbFN0b3JhZ2UgJiYgbG9jYWxTdG9yYWdlLnNldEl0ZW0pXHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJzZWxlY3RlZENsb3VkVmlkZW9UYWJcIiwgJChcIiN0YWJzXCIpLnRhYnMoXCJvcHRpb25cIiwgXCJhY3RpdmVcIikpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhY3RpdmU6ICFpc0NyZWF0aW5nICYmIGxvY2FsU3RvcmFnZSAmJiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSA/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwic2VsZWN0ZWRDbG91ZFZpZGVvVGFiXCIpIDogbnVsbFxyXG4gICAgICAgIH0pLnNob3coKTtcclxuICAgIH0pO1xyXG59Il0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9

View File

@@ -26,4 +26,4 @@ var Orchard;
})(Azure = Orchard.Azure || (Orchard.Azure = {}));
})(Orchard || (Orchard = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtdmlkZW9wbGF5ZXItZGF0YS5qcyIsImNsb3VkbWVkaWEtdmlkZW9wbGF5ZXItZGF0YS50cyJdLCJuYW1lcyI6WyJPcmNoYXJkIiwiT3JjaGFyZC5BenVyZSIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcyIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5WaWRlb1BsYXllciIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5WaWRlb1BsYXllci5EYXRhIiwiT3JjaGFyZC5BenVyZS5NZWRpYVNlcnZpY2VzLlZpZGVvUGxheWVyLkRhdGEuQXNzZXRUeXBlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQSxJQUFPLE9BQU8sQ0FrRmI7QUFsRkQsV0FBTyxPQUFPO0lBQUNBLElBQUFBLEtBQUtBLENBa0ZuQkE7SUFsRmNBLFdBQUFBLEtBQUtBO1FBQUNDLElBQUFBLGFBQWFBLENBa0ZqQ0E7UUFsRm9CQSxXQUFBQSxhQUFhQTtZQUFDQyxJQUFBQSxXQUFXQSxDQWtGN0NBO1lBbEZrQ0EsV0FBQUEsV0FBV0E7Z0JBQUNDLElBQUFBLElBQUlBLENBa0ZsREE7Z0JBbEY4Q0EsV0FBQUEsSUFBSUEsRUFBQ0EsQ0FBQ0E7b0JBb0JqREMsV0FBWUEsU0FBU0E7d0JBQ2pCQyxxREFBVUEsQ0FBQUE7d0JBQ1ZBLG1FQUFpQkEsQ0FBQUE7d0JBQ2pCQSw2REFBY0EsQ0FBQUE7d0JBQ2RBLDJEQUFhQSxDQUFBQTtvQkFDakJBLENBQUNBLEVBTFdELGNBQVNBLEtBQVRBLGNBQVNBLFFBS3BCQTtvQkFMREEsSUFBWUEsU0FBU0EsR0FBVEEsY0FLWEEsQ0FBQUE7Z0JBeURMQSxDQUFDQSxFQWxGOENELElBQUlBLEdBQUpBLGdCQUFJQSxLQUFKQSxnQkFBSUEsUUFrRmxEQTtZQUFEQSxDQUFDQSxFQWxGa0NELFdBQVdBLEdBQVhBLHlCQUFXQSxLQUFYQSx5QkFBV0EsUUFrRjdDQTtRQUFEQSxDQUFDQSxFQWxGb0JELGFBQWFBLEdBQWJBLG1CQUFhQSxLQUFiQSxtQkFBYUEsUUFrRmpDQTtJQUFEQSxDQUFDQSxFQWxGY0QsS0FBS0EsR0FBTEEsYUFBS0EsS0FBTEEsYUFBS0EsUUFrRm5CQTtBQUFEQSxDQUFDQSxFQWxGTSxPQUFPLEtBQVAsT0FBTyxRQWtGYiIsImZpbGUiOiJjbG91ZG1lZGlhLXZpZGVvcGxheWVyLWRhdGEuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsIm1vZHVsZSBPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuVmlkZW9QbGF5ZXIuRGF0YSB7XG5cbiAgICBpbXBvcnQgRHVyYXRpb24gPSBtb21lbnQuRHVyYXRpb247XG5cbiAgICBleHBvcnQgaW50ZXJmYWNlIElBc3NldERhdGEge1xuICAgICAgICBWaWRlb0Fzc2V0czogSVZpZGVvQXNzZXRbXTtcbiAgICAgICAgRHluYW1pY1ZpZGVvQXNzZXRzOiBJRHluYW1pY1ZpZGVvQXNzZXRbXTtcbiAgICAgICAgVGh1bWJuYWlsQXNzZXRzOiBJVGh1bWJuYWlsQXNzZXRbXTtcbiAgICAgICAgU3VidGl0bGVBc3NldHM6IElTdWJ0aXRsZUFzc2V0W107XG4gICAgfVxuXG4gICAgZXhwb3J0IGludGVyZmFjZSBJQXNzZXQge1xuICAgICAgICBUeXBlOiBBc3NldFR5cGU7XG4gICAgICAgIElkOiBudW1iZXI7XG4gICAgICAgIE5hbWU6IHN0cmluZztcbiAgICAgICAgTWltZVR5cGU6IHN0cmluZztcbiAgICAgICAgTWFpbkZpbGVVcmw6IHN0cmluZztcbiAgICAgICAgTWVkaWFRdWVyeTogc3RyaW5nO1xuICAgIH1cblxuICAgIGV4cG9ydCBlbnVtIEFzc2V0VHlwZSB7XG4gICAgICAgIFZpZGVvQXNzZXQsXG4gICAgICAgIER5bmFtaWNWaWRlb0Fzc2V0LFxuICAgICAgICBUaHVtYm5haWxBc3NldCxcbiAgICAgICAgU3VidGl0bGVBc3NldFxuICAgIH1cblxuICAgIGV4cG9ydCBpbnRlcmZhY2UgSVZpZGVvQXNzZXQgZXh0ZW5kcyBJQXNzZXQge1xuICAgICAgICBFbmNvZGluZ1ByZXNldDogc3RyaW5nO1xuICAgICAgICBFbmNvZGVyTWV0YWRhdGE6IElFbmNvZGVyTWV0YWRhdGE7XG4gICAgfVxuXG4gICAgZXhwb3J0IGludGVyZmFjZSBJRHluYW1pY1ZpZGVvQXNzZXQgZXh0ZW5kcyBJVmlkZW9Bc3NldCB7XG4gICAgICAgIFNtb290aFN0cmVhbWluZ1VybDogc3RyaW5nO1xuICAgICAgICBIbHNVcmw6IHN0cmluZztcbiAgICAgICAgTXBlZ0Rhc2hVcmw6IHN0cmluZztcbiAgICB9XG5cbiAgICBleHBvcnQgaW50ZXJmYWNlIElUaHVtYm5haWxBc3NldCBleHRlbmRzIElBc3NldCB7XG4gICAgfVxuXG4gICAgZXhwb3J0IGludGVyZmFjZSBJU3VidGl0bGVBc3NldCBleHRlbmRzIElBc3NldCB7XG4gICAgICAgIExhbmd1YWdlOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgZXhwb3J0IGludGVyZmFjZSBJRW5jb2Rlck1ldGFkYXRhIHtcbiAgICAgICAgQXNzZXRGaWxlczogSUFzc2V0RmlsZVtdO1xuICAgIH1cblxuICAgIGV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0RmlsZSB7XG4gICAgICAgIE5hbWU6IHN0cmluZztcbiAgICAgICAgU2l6ZTogbnVtYmVyO1xuICAgICAgICBEdXJhdGlvbjogRHVyYXRpb247XG4gICAgICAgIEF1ZGlvVHJhY2tzOiBJQXVkaW9UcmFja1tdO1xuICAgICAgICBWaWRlb1RyYWNrczogSVZpZGVvVHJhY2tbXTtcbiAgICAgICAgU291cmNlczogc3RyaW5nW107XG4gICAgICAgIEJpdHJhdGU6IG51bWJlcjtcbiAgICAgICAgTWltZVR5cGU6IHN0cmluZztcbiAgICB9XG5cbiAgICBleHBvcnQgaW50ZXJmYWNlIElBdWRpb1RyYWNrIHtcbiAgICAgICAgSW5kZXg6IG51bWJlcjtcbiAgICAgICAgQml0cmF0ZTogbnVtYmVyO1xuICAgICAgICBTYW1wbGluZ1JhdGU6IG51bWJlcjtcbiAgICAgICAgQml0c1BlclNhbXBsZTogbnVtYmVyO1xuICAgICAgICBDaGFubmVsczogbnVtYmVyO1xuICAgICAgICBDb2RlYzogc3RyaW5nO1xuICAgICAgICBFbmNvZGVyVmVyc2lvbjogc3RyaW5nO1xuICAgIH1cblxuICAgIGV4cG9ydCBpbnRlcmZhY2UgSVZpZGVvVHJhY2sge1xuICAgICAgICBJbmRleDogbnVtYmVyO1xuICAgICAgICBCaXRyYXRlOiBudW1iZXI7XG4gICAgICAgIFRhcmdldEJpdHJhdGU6IG51bWJlcjtcbiAgICAgICAgRnJhbWVyYXRlOiBudW1iZXI7XG4gICAgICAgIFRhcmdldEZyYW1lcmF0ZTogbnVtYmVyO1xuICAgICAgICBGb3VyQ2M6IHN0cmluZztcbiAgICAgICAgV2lkdGg6IG51bWJlcjtcbiAgICAgICAgSGVpZ2h0OiBudW1iZXI7XG4gICAgICAgIERpc3BsYXlSYXRpb1g6IG51bWJlcjtcbiAgICAgICAgRGlzcGxheVJhdGlvWTogbnVtYmVyO1xuICAgIH1cbn0gIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtdmlkZW9wbGF5ZXItZGF0YS5qcyIsImNsb3VkbWVkaWEtdmlkZW9wbGF5ZXItZGF0YS50cyJdLCJuYW1lcyI6WyJPcmNoYXJkIiwiT3JjaGFyZC5BenVyZSIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcyIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5WaWRlb1BsYXllciIsIk9yY2hhcmQuQXp1cmUuTWVkaWFTZXJ2aWNlcy5WaWRlb1BsYXllci5EYXRhIiwiT3JjaGFyZC5BenVyZS5NZWRpYVNlcnZpY2VzLlZpZGVvUGxheWVyLkRhdGEuQXNzZXRUeXBlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQSxJQUFPLE9BQU8sQ0FrRmI7QUFsRkQsV0FBTyxPQUFPO0lBQUNBLElBQUFBLEtBQUtBLENBa0ZuQkE7SUFsRmNBLFdBQUFBLEtBQUtBO1FBQUNDLElBQUFBLGFBQWFBLENBa0ZqQ0E7UUFsRm9CQSxXQUFBQSxhQUFhQTtZQUFDQyxJQUFBQSxXQUFXQSxDQWtGN0NBO1lBbEZrQ0EsV0FBQUEsV0FBV0E7Z0JBQUNDLElBQUFBLElBQUlBLENBa0ZsREE7Z0JBbEY4Q0EsV0FBQUEsSUFBSUEsRUFBQ0EsQ0FBQ0E7b0JBb0JqREMsV0FBWUEsU0FBU0E7d0JBQ2pCQyxxREFBVUEsQ0FBQUE7d0JBQ1ZBLG1FQUFpQkEsQ0FBQUE7d0JBQ2pCQSw2REFBY0EsQ0FBQUE7d0JBQ2RBLDJEQUFhQSxDQUFBQTtvQkFDakJBLENBQUNBLEVBTFdELGNBQVNBLEtBQVRBLGNBQVNBLFFBS3BCQTtvQkFMREEsSUFBWUEsU0FBU0EsR0FBVEEsY0FLWEEsQ0FBQUE7Z0JBeURMQSxDQUFDQSxFQWxGOENELElBQUlBLEdBQUpBLGdCQUFJQSxLQUFKQSxnQkFBSUEsUUFrRmxEQTtZQUFEQSxDQUFDQSxFQWxGa0NELFdBQVdBLEdBQVhBLHlCQUFXQSxLQUFYQSx5QkFBV0EsUUFrRjdDQTtRQUFEQSxDQUFDQSxFQWxGb0JELGFBQWFBLEdBQWJBLG1CQUFhQSxLQUFiQSxtQkFBYUEsUUFrRmpDQTtJQUFEQSxDQUFDQSxFQWxGY0QsS0FBS0EsR0FBTEEsYUFBS0EsS0FBTEEsYUFBS0EsUUFrRm5CQTtBQUFEQSxDQUFDQSxFQWxGTSxPQUFPLEtBQVAsT0FBTyxRQWtGYiIsImZpbGUiOiJjbG91ZG1lZGlhLXZpZGVvcGxheWVyLWRhdGEuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsIm1vZHVsZSBPcmNoYXJkLkF6dXJlLk1lZGlhU2VydmljZXMuVmlkZW9QbGF5ZXIuRGF0YSB7XHJcblxyXG4gICAgaW1wb3J0IER1cmF0aW9uID0gbW9tZW50LkR1cmF0aW9uO1xyXG5cclxuICAgIGV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0RGF0YSB7XHJcbiAgICAgICAgVmlkZW9Bc3NldHM6IElWaWRlb0Fzc2V0W107XHJcbiAgICAgICAgRHluYW1pY1ZpZGVvQXNzZXRzOiBJRHluYW1pY1ZpZGVvQXNzZXRbXTtcclxuICAgICAgICBUaHVtYm5haWxBc3NldHM6IElUaHVtYm5haWxBc3NldFtdO1xyXG4gICAgICAgIFN1YnRpdGxlQXNzZXRzOiBJU3VidGl0bGVBc3NldFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0IHtcclxuICAgICAgICBUeXBlOiBBc3NldFR5cGU7XHJcbiAgICAgICAgSWQ6IG51bWJlcjtcclxuICAgICAgICBOYW1lOiBzdHJpbmc7XHJcbiAgICAgICAgTWltZVR5cGU6IHN0cmluZztcclxuICAgICAgICBNYWluRmlsZVVybDogc3RyaW5nO1xyXG4gICAgICAgIE1lZGlhUXVlcnk6IHN0cmluZztcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZW51bSBBc3NldFR5cGUge1xyXG4gICAgICAgIFZpZGVvQXNzZXQsXHJcbiAgICAgICAgRHluYW1pY1ZpZGVvQXNzZXQsXHJcbiAgICAgICAgVGh1bWJuYWlsQXNzZXQsXHJcbiAgICAgICAgU3VidGl0bGVBc3NldFxyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBpbnRlcmZhY2UgSVZpZGVvQXNzZXQgZXh0ZW5kcyBJQXNzZXQge1xyXG4gICAgICAgIEVuY29kaW5nUHJlc2V0OiBzdHJpbmc7XHJcbiAgICAgICAgRW5jb2Rlck1ldGFkYXRhOiBJRW5jb2Rlck1ldGFkYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBpbnRlcmZhY2UgSUR5bmFtaWNWaWRlb0Fzc2V0IGV4dGVuZHMgSVZpZGVvQXNzZXQge1xyXG4gICAgICAgIFNtb290aFN0cmVhbWluZ1VybDogc3RyaW5nO1xyXG4gICAgICAgIEhsc1VybDogc3RyaW5nO1xyXG4gICAgICAgIE1wZWdEYXNoVXJsOiBzdHJpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGludGVyZmFjZSBJVGh1bWJuYWlsQXNzZXQgZXh0ZW5kcyBJQXNzZXQge1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBpbnRlcmZhY2UgSVN1YnRpdGxlQXNzZXQgZXh0ZW5kcyBJQXNzZXQge1xyXG4gICAgICAgIExhbmd1YWdlOiBzdHJpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGludGVyZmFjZSBJRW5jb2Rlck1ldGFkYXRhIHtcclxuICAgICAgICBBc3NldEZpbGVzOiBJQXNzZXRGaWxlW107XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGludGVyZmFjZSBJQXNzZXRGaWxlIHtcclxuICAgICAgICBOYW1lOiBzdHJpbmc7XHJcbiAgICAgICAgU2l6ZTogbnVtYmVyO1xyXG4gICAgICAgIER1cmF0aW9uOiBEdXJhdGlvbjtcclxuICAgICAgICBBdWRpb1RyYWNrczogSUF1ZGlvVHJhY2tbXTtcclxuICAgICAgICBWaWRlb1RyYWNrczogSVZpZGVvVHJhY2tbXTtcclxuICAgICAgICBTb3VyY2VzOiBzdHJpbmdbXTtcclxuICAgICAgICBCaXRyYXRlOiBudW1iZXI7XHJcbiAgICAgICAgTWltZVR5cGU6IHN0cmluZztcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgaW50ZXJmYWNlIElBdWRpb1RyYWNrIHtcclxuICAgICAgICBJbmRleDogbnVtYmVyO1xyXG4gICAgICAgIEJpdHJhdGU6IG51bWJlcjtcclxuICAgICAgICBTYW1wbGluZ1JhdGU6IG51bWJlcjtcclxuICAgICAgICBCaXRzUGVyU2FtcGxlOiBudW1iZXI7XHJcbiAgICAgICAgQ2hhbm5lbHM6IG51bWJlcjtcclxuICAgICAgICBDb2RlYzogc3RyaW5nO1xyXG4gICAgICAgIEVuY29kZXJWZXJzaW9uOiBzdHJpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGludGVyZmFjZSBJVmlkZW9UcmFjayB7XHJcbiAgICAgICAgSW5kZXg6IG51bWJlcjtcclxuICAgICAgICBCaXRyYXRlOiBudW1iZXI7XHJcbiAgICAgICAgVGFyZ2V0Qml0cmF0ZTogbnVtYmVyO1xyXG4gICAgICAgIEZyYW1lcmF0ZTogbnVtYmVyO1xyXG4gICAgICAgIFRhcmdldEZyYW1lcmF0ZTogbnVtYmVyO1xyXG4gICAgICAgIEZvdXJDYzogc3RyaW5nO1xyXG4gICAgICAgIFdpZHRoOiBudW1iZXI7XHJcbiAgICAgICAgSGVpZ2h0OiBudW1iZXI7XHJcbiAgICAgICAgRGlzcGxheVJhdGlvWDogbnVtYmVyO1xyXG4gICAgICAgIERpc3BsYXlSYXRpb1k6IG51bWJlcjtcclxuICAgIH1cclxufSAiXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=

View File

@@ -46,4 +46,4 @@ section.commands {
background-position: -195px -66px;
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtYWRtaW4tYXNzZXQuY3NzIiwiY2xvdWRtZWRpYS1hZG1pbi1hc3NldC5sZXNzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxBQ0xBO0VBQ0ksaUJBQUE7O0FBR0osTUFDSTtBQURKLE1BQ087RUFDQyxnQkFBQTs7QUFGUixNQUlJLEtBQUk7RUFDQSxpQkFBQTtFQUNBLGNBQUE7O0FBS0osS0FEQyxNQUNBO0FBREwsS0FBSyxNQUNlO0VBQ1osV0FBQTs7QUFJUixPQUFPO0VBQ0gsZUFBQTs7QUFHSixlQUFnQixlQUFlO0VBQzNCLHNCQUFzQiwyQkFBdEI7O0FBRUEsZUFIWSxlQUFlLDJCQUcxQjtFQUNHLGdDQUFBOztBQUdKLGVBUFksZUFBZSwyQkFPMUI7RUFDRyxnQ0FBQTs7QUFHSixlQVhZLGVBQWUsMkJBVzFCO0VBQ0csaUNBQUE7O0FBR0osZUFmWSxlQUFlLDJCQWUxQjtFQUNHLGlDQUFBOztBQUdKLGVBbkJZLGVBQWUsMkJBbUIxQjtFQUNHLGlDQUFBOztBQUdKLGVBdkJZLGVBQWUsMkJBdUIxQjtFQUNHLGlDQUFBOztBQUdKLGVBM0JZLGVBQWUsMkJBMkIxQjtFQUNHLGlDQUFBIiwiZmlsZSI6ImNsb3VkbWVkaWEtYWRtaW4tYXNzZXQuY3NzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCLvu78uYXNzZXQtZmlsZSB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbmxlZ2VuZCB7XG4gICAgYSwgc3BhbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43ZW07XG4gICAgfVxuICAgIHNwYW4ubGVnZW5kIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxZW07XG4gICAgICAgIGZvbnQtc2l6ZTogIDFlbTtcbiAgICB9XG59XG5cbnRhYmxlLml0ZW1zIHtcbiAgICAmLmFzc2V0LXRyYWNrcywgLmFzc2V0LWxvY2F0b3JzIHtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxufVxuXG5zZWN0aW9uLmNvbW1hbmRzIHtcbiAgICBtYXJnaW4tdG9wOiAxZW07XG59XG5cbi5qc3RyZWUtZGVmYXVsdCAuanN0cmVlLWFuY2hvciA+IC5qc3RyZWUtdGhlbWVpY29uLWN1c3RvbSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi9JbWFnZXMvQXNzZXRUcmVlVmlldy5wbmdcIik7XG5cbiAgICAmLmFzc2V0IHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTI2M3B4IC0zcHg7XG4gICAgfVxuXG4gICAgJi50cmFja3Mge1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjYzcHggLTNweDtcbiAgICB9XG4gICAgXG4gICAgJi5wcm9wZXJ0eSB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0xMzBweCAtNjZweDtcbiAgICB9XG5cbiAgICAmLm1pbWV0eXBlIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIyNnB4IC02NnB4O1xuICAgIH1cblxuICAgICYuZHVyYXRpb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjU5cHggLTY2cHg7XG4gICAgfVxuXG4gICAgJi52aWRlb3RyYWNrIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2NHB4IC02NnB4O1xuICAgIH1cblxuICAgICYuYXVkaW90cmFjayB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0xOTVweCAtNjZweDtcbiAgICB9XG59Il0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 */
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtYWRtaW4tYXNzZXQuY3NzIiwiY2xvdWRtZWRpYS1hZG1pbi1hc3NldC5sZXNzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxBQ0xBO0VBQ0ksa0JBQUE7Q0RDSDtBQ0VEOztFQUVRLGlCQUFBO0NEQVA7QUNGRDtFQUtRLGtCQUFBO0VBQ0EsZUFBQTtDREFQO0FDS0c7O0VBQ0ksWUFBQTtDREZQO0FDTUQ7RUFDSSxnQkFBQTtDREpIO0FDT0Q7RUFDSSxrREFBQTtDRExIO0FDT0c7RUFDSSxpQ0FBQTtDRExQO0FDUUc7RUFDSSxpQ0FBQTtDRE5QO0FDU0c7RUFDSSxrQ0FBQTtDRFBQO0FDVUc7RUFDSSxrQ0FBQTtDRFJQO0FDV0c7RUFDSSxrQ0FBQTtDRFRQO0FDWUc7RUFDSSxrQ0FBQTtDRFZQO0FDYUc7RUFDSSxrQ0FBQTtDRFhQIiwiZmlsZSI6ImNsb3VkbWVkaWEtYWRtaW4tYXNzZXQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmFzc2V0LWZpbGUge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cbmxlZ2VuZCBhLFxubGVnZW5kIHNwYW4ge1xuICBmb250LXNpemU6IDAuN2VtO1xufVxubGVnZW5kIHNwYW4ubGVnZW5kIHtcbiAgbWFyZ2luLXJpZ2h0OiAxZW07XG4gIGZvbnQtc2l6ZTogMWVtO1xufVxudGFibGUuaXRlbXMuYXNzZXQtdHJhY2tzLFxudGFibGUuaXRlbXMgLmFzc2V0LWxvY2F0b3JzIHtcbiAgd2lkdGg6IGF1dG87XG59XG5zZWN0aW9uLmNvbW1hbmRzIHtcbiAgbWFyZ2luLXRvcDogMWVtO1xufVxuLmpzdHJlZS1kZWZhdWx0IC5qc3RyZWUtYW5jaG9yID4gLmpzdHJlZS10aGVtZWljb24tY3VzdG9tIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiSW1hZ2VzL0Fzc2V0VHJlZVZpZXcucG5nXCIpO1xufVxuLmpzdHJlZS1kZWZhdWx0IC5qc3RyZWUtYW5jaG9yID4gLmpzdHJlZS10aGVtZWljb24tY3VzdG9tLmFzc2V0IHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTI2M3B4IC0zcHg7XG59XG4uanN0cmVlLWRlZmF1bHQgLmpzdHJlZS1hbmNob3IgPiAuanN0cmVlLXRoZW1laWNvbi1jdXN0b20udHJhY2tzIHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTI2M3B4IC0zcHg7XG59XG4uanN0cmVlLWRlZmF1bHQgLmpzdHJlZS1hbmNob3IgPiAuanN0cmVlLXRoZW1laWNvbi1jdXN0b20ucHJvcGVydHkge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTMwcHggLTY2cHg7XG59XG4uanN0cmVlLWRlZmF1bHQgLmpzdHJlZS1hbmNob3IgPiAuanN0cmVlLXRoZW1laWNvbi1jdXN0b20ubWltZXR5cGUge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI2cHggLTY2cHg7XG59XG4uanN0cmVlLWRlZmF1bHQgLmpzdHJlZS1hbmNob3IgPiAuanN0cmVlLXRoZW1laWNvbi1jdXN0b20uZHVyYXRpb24ge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjU5cHggLTY2cHg7XG59XG4uanN0cmVlLWRlZmF1bHQgLmpzdHJlZS1hbmNob3IgPiAuanN0cmVlLXRoZW1laWNvbi1jdXN0b20udmlkZW90cmFjayB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IC0xNjRweCAtNjZweDtcbn1cbi5qc3RyZWUtZGVmYXVsdCAuanN0cmVlLWFuY2hvciA+IC5qc3RyZWUtdGhlbWVpY29uLWN1c3RvbS5hdWRpb3RyYWNrIHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE5NXB4IC02NnB4O1xufVxuIiwi77u/LmFzc2V0LWZpbGUge1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbn1cclxuXHJcbmxlZ2VuZCB7XHJcbiAgICBhLCBzcGFuIHtcclxuICAgICAgICBmb250LXNpemU6IDAuN2VtO1xyXG4gICAgfVxyXG4gICAgc3Bhbi5sZWdlbmQge1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMWVtO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogIDFlbTtcclxuICAgIH1cclxufVxyXG5cclxudGFibGUuaXRlbXMge1xyXG4gICAgJi5hc3NldC10cmFja3MsIC5hc3NldC1sb2NhdG9ycyB7XHJcbiAgICAgICAgd2lkdGg6IGF1dG87XHJcbiAgICB9XHJcbn1cclxuXHJcbnNlY3Rpb24uY29tbWFuZHMge1xyXG4gICAgbWFyZ2luLXRvcDogMWVtO1xyXG59XHJcblxyXG4uanN0cmVlLWRlZmF1bHQgLmpzdHJlZS1hbmNob3IgPiAuanN0cmVlLXRoZW1laWNvbi1jdXN0b20ge1xyXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi9JbWFnZXMvQXNzZXRUcmVlVmlldy5wbmdcIik7XHJcblxyXG4gICAgJi5hc3NldCB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTI2M3B4IC0zcHg7XHJcbiAgICB9XHJcblxyXG4gICAgJi50cmFja3Mge1xyXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0yNjNweCAtM3B4O1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAmLnByb3BlcnR5IHtcclxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTMwcHggLTY2cHg7XHJcbiAgICB9XHJcblxyXG4gICAgJi5taW1ldHlwZSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIyNnB4IC02NnB4O1xyXG4gICAgfVxyXG5cclxuICAgICYuZHVyYXRpb24ge1xyXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0yNTlweCAtNjZweDtcclxuICAgIH1cclxuXHJcbiAgICAmLnZpZGVvdHJhY2sge1xyXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0xNjRweCAtNjZweDtcclxuICAgIH1cclxuXHJcbiAgICAmLmF1ZGlvdHJhY2sge1xyXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0xOTVweCAtNjZweDtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */

View File

@@ -4,4 +4,4 @@
*/
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtYWRtaW4tam9iLmNzcyIsImNsb3VkbWVkaWEtYWRtaW4tam9iLmxlc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEFDTEEiLCJmaWxlIjoiY2xvdWRtZWRpYS1hZG1pbi1qb2IuY3NzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCIiXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= */
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtYWRtaW4tam9iLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUFMQSIsImZpbGUiOiJjbG91ZG1lZGlhLWFkbWluLWpvYi5jc3MiLCJzb3VyY2VSb290IjoiL3NvdXJjZS8iLCJzb3VyY2VzQ29udGVudCI6W119 */

View File

@@ -14,4 +14,4 @@
font-size: 1.4em;
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtYWRtaW4tc2VsZWN0dGFzay5jc3MiLCJjbG91ZG1lZGlhLWFkbWluLXNlbGVjdHRhc2subGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQSxVQUNJO0VBQ0ksWUFBQTtFQUNBLGVBQUE7RUFDQSx5QkFBQTtFQUNBLHlCQUFBO0VBQ0EsWUFBQTs7QUFOUixVQUNJLGdCQU9JO0VBQ0ksZ0JBQUEiLCJmaWxlIjoiY2xvdWRtZWRpYS1hZG1pbi1zZWxlY3R0YXNrLmNzcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwi77u/I3Rhc2stbGlzdCB7XG4gICAgLnRhc2stbGlzdC1pdGVtIHtcbiAgICAgICAgd2lkdGg6IDQwMHB4O1xuICAgICAgICBtYXJnaW46IDEuNWVtIDA7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlNGU1ZTY7ICBcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjRmNTtcbiAgICAgICAgcGFkZGluZzogMWVtO1xuXG4gICAgICAgIGEge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjRlbTtcbiAgICAgICAgfVxuICAgIH1cbn0iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= */
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtYWRtaW4tc2VsZWN0dGFzay5jc3MiLCJjbG91ZG1lZGlhLWFkbWluLXNlbGVjdHRhc2subGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQTtFQUVRLGFBQUE7RUFDQSxnQkFBQTtFQUNBLDBCQUFBO0VBQ0EsMEJBQUE7RUFDQSxhQUFBO0NEQVA7QUNORDtFQVNZLGlCQUFBO0NEQVgiLCJmaWxlIjoiY2xvdWRtZWRpYS1hZG1pbi1zZWxlY3R0YXNrLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIiN0YXNrLWxpc3QgLnRhc2stbGlzdC1pdGVtIHtcbiAgd2lkdGg6IDQwMHB4O1xuICBtYXJnaW46IDEuNWVtIDA7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlNGU1ZTY7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2Y0ZjU7XG4gIHBhZGRpbmc6IDFlbTtcbn1cbiN0YXNrLWxpc3QgLnRhc2stbGlzdC1pdGVtIGEge1xuICBmb250LXNpemU6IDEuNGVtO1xufVxuIiwi77u/I3Rhc2stbGlzdCB7XHJcbiAgICAudGFzay1saXN0LWl0ZW0ge1xyXG4gICAgICAgIHdpZHRoOiA0MDBweDtcclxuICAgICAgICBtYXJnaW46IDEuNWVtIDA7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2U0ZTVlNjsgIFxyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmM2Y0ZjU7XHJcbiAgICAgICAgcGFkZGluZzogMWVtO1xyXG5cclxuICAgICAgICBhIHtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxLjRlbTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= */

View File

@@ -33,4 +33,4 @@ h2 {
text-align: center;
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtYWRtaW4tc2V0dGluZ3MuY3NzIiwiY2xvdWRtZWRpYS1hZG1pbi1zZXR0aW5ncy5sZXNzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxBQ0xBO0VBQ0MsMEJBQUE7O0FBR0Q7QUFBYztFQUNiLGVBQUE7O0FBR0Q7RUFDQyxXQUFBOztBQURELGNBRUMsR0FBRSxVQUFVO0FBRmIsY0FFa0IsR0FBRSxVQUFVO0FBRjlCLGNBRW1DLEdBQUUsVUFBVTtBQUYvQyxjQUVvRCxHQUFFLFVBQVU7RUFDOUQsa0JBQUE7O0FBSEYsY0FLQyxHQUFFLFVBQVU7RUFDWCxZQUFBOztBQUlGO0VBQ0MsV0FBQTs7Ozs7QUFERCxnQkFFQyxHQUFFLFVBQVU7QUFGYixnQkFFa0IsR0FBRSxVQUFVO0VBQzVCLGtCQUFBIiwiZmlsZSI6ImNsb3VkbWVkaWEtYWRtaW4tc2V0dGluZ3MuY3NzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCLvu79oMiB7XG5cdG1hcmdpbi10b3A6IDFlbSAhaW1wb3J0YW50O1xufVxuXG4jdGVzdC1idXR0b24sICNzYXZlLWJ1dHRvbiB7XG5cdG1hcmdpbi10b3A6IDFlbTtcbn1cblxuI3ByZXNldHMtdGFibGUge1xuXHR3aWR0aDogYXV0bztcblx0dGg6bnRoLWNoaWxkKDEpLCB0aDpudGgtY2hpbGQoNCksIHRkOm50aC1jaGlsZCgxKSwgdGQ6bnRoLWNoaWxkKDQpIHtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdH1cblx0dGQ6bnRoLWNoaWxkKDIpIHtcblx0XHR3aWR0aDogNDAwcHg7IFxuXHR9XG59XG5cbiNsYW5ndWFnZXMtdGFibGUge1xuXHR3aWR0aDogYXV0bztcblx0dGg6bnRoLWNoaWxkKDIpLCB0ZDpudGgtY2hpbGQoMikge1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0fVxuXHQvKnRkOm50aC1jaGlsZCgyKSB7XG5cdFx0d2lkdGg6IDQwMHB4O1xuXHR9Ki9cbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtYWRtaW4tc2V0dGluZ3MuY3NzIiwiY2xvdWRtZWRpYS1hZG1pbi1zZXR0aW5ncy5sZXNzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxBQ0xBO0VBQ0MsMkJBQUE7Q0RDQTtBQ0VEOztFQUNDLGdCQUFBO0NEQ0E7QUNFRDtFQUNDLFlBQUE7Q0RBQTtBQ0REOzs7O0VBR0UsbUJBQUE7Q0RJRDtBQ1BEO0VBTUUsYUFBQTtDRElEO0FDQUQ7RUFDQyxZQUFBO0VERUM7O0lBRUU7Q0FDSDtBQ05EOztFQUdFLG1CQUFBO0NET0QiLCJmaWxlIjoiY2xvdWRtZWRpYS1hZG1pbi1zZXR0aW5ncy5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJoMiB7XG4gIG1hcmdpbi10b3A6IDFlbSAhaW1wb3J0YW50O1xufVxuI3Rlc3QtYnV0dG9uLFxuI3NhdmUtYnV0dG9uIHtcbiAgbWFyZ2luLXRvcDogMWVtO1xufVxuI3ByZXNldHMtdGFibGUge1xuICB3aWR0aDogYXV0bztcbn1cbiNwcmVzZXRzLXRhYmxlIHRoOm50aC1jaGlsZCgxKSxcbiNwcmVzZXRzLXRhYmxlIHRoOm50aC1jaGlsZCg0KSxcbiNwcmVzZXRzLXRhYmxlIHRkOm50aC1jaGlsZCgxKSxcbiNwcmVzZXRzLXRhYmxlIHRkOm50aC1jaGlsZCg0KSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbiNwcmVzZXRzLXRhYmxlIHRkOm50aC1jaGlsZCgyKSB7XG4gIHdpZHRoOiA0MDBweDtcbn1cbiNsYW5ndWFnZXMtdGFibGUge1xuICB3aWR0aDogYXV0bztcbiAgLyp0ZDpudGgtY2hpbGQoMikge1xuXHRcdHdpZHRoOiA0MDBweDtcblx0fSovXG59XG4jbGFuZ3VhZ2VzLXRhYmxlIHRoOm50aC1jaGlsZCgyKSxcbiNsYW5ndWFnZXMtdGFibGUgdGQ6bnRoLWNoaWxkKDIpIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuIiwi77u/aDIge1xyXG5cdG1hcmdpbi10b3A6IDFlbSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4jdGVzdC1idXR0b24sICNzYXZlLWJ1dHRvbiB7XHJcblx0bWFyZ2luLXRvcDogMWVtO1xyXG59XHJcblxyXG4jcHJlc2V0cy10YWJsZSB7XHJcblx0d2lkdGg6IGF1dG87XHJcblx0dGg6bnRoLWNoaWxkKDEpLCB0aDpudGgtY2hpbGQoNCksIHRkOm50aC1jaGlsZCgxKSwgdGQ6bnRoLWNoaWxkKDQpIHtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHR9XHJcblx0dGQ6bnRoLWNoaWxkKDIpIHtcclxuXHRcdHdpZHRoOiA0MDBweDsgXHJcblx0fVxyXG59XHJcblxyXG4jbGFuZ3VhZ2VzLXRhYmxlIHtcclxuXHR3aWR0aDogYXV0bztcclxuXHR0aDpudGgtY2hpbGQoMiksIHRkOm50aC1jaGlsZCgyKSB7XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0fVxyXG5cdC8qdGQ6bnRoLWNoaWxkKDIpIHtcclxuXHRcdHdpZHRoOiA0MDBweDtcclxuXHR9Ki9cclxufVxyXG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= */

View File

@@ -32,4 +32,4 @@
margin-top: 2px;
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtZWRpdC1hc3NldHMuY3NzIiwiY2xvdWRtZWRpYS1lZGl0LWFzc2V0cy5sZXNzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxBQ0xBO0VBQ0ksc0JBQUE7O0FBREosYUFHSSxNQUNJO0FBSlIsYUFHSSxNQUNRLEdBQUU7RUFDRixnQkFBQTs7QUFFSSxhQUpaLE1BQ0ksR0FFSSxHQUNLO0FBQUQsYUFKWixNQUNRLEdBQUUsTUFFRixHQUNLO0VBQ0csa0JBQUE7O0FBR1IsYUFSUixNQUNJLEdBT0s7QUFBRCxhQVJSLE1BQ1EsR0FBRSxNQU9EO0VBQ0csbUJBQUE7O0FBREosYUFSUixNQUNJLEdBT0ssUUFFRztBQUZKLGFBUlIsTUFDUSxHQUFFLE1BT0QsUUFFRztFQUNJLGdCQUFBOztBQUhSLGFBUlIsTUFDSSxHQU9LLFFBRUcsR0FHSTtBQUxSLGFBUlIsTUFDUSxHQUFFLE1BT0QsUUFFRyxHQUdJO0VBQ0ksU0FBQTtFQUNBLGlCQUFBO0VBQ0EsY0FBQTs7QUFuQnhCLGFBMEJJO0VBQ0ksZUFBQSIsImZpbGUiOiJjbG91ZG1lZGlhLWVkaXQtYXNzZXRzLmNzcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwi77u/I2Fzc2V0cy10YWJsZSB7XG4gICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcblxuICAgIHRib2R5IHtcbiAgICAgICAgdHIsIHRyOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgICAgICAgICB0ZCB7XG4gICAgICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuaGVhZGluZyB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2Y5ZjlmOTtcbiAgICAgICAgICAgICAgICB0ZCB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgaDMge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5wcm9ncmVzcy1iYXIge1xuICAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgfVxufSJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtZWRpdC1hc3NldHMuY3NzIiwiY2xvdWRtZWRpYS1lZGl0LWFzc2V0cy5sZXNzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxBQ0xBO0VBQ0ksdUJBQUE7Q0RDSDtBQ0ZEOztFQUtZLGlCQUFBO0NEQ1g7QUNDZTs7RUFDSSxtQkFBQTtDREVuQjtBQ0NXOztFQUNJLG9CQUFBO0NERWY7QUNIVzs7RUFHUSxpQkFBQTtDREluQjtBQ1BXOztFQU1ZLFVBQUE7RUFDQSxrQkFBQTtFQUNBLGVBQUE7Q0RLdkI7QUN4QkQ7RUEyQlEsZ0JBQUE7Q0RBUCIsImZpbGUiOiJjbG91ZG1lZGlhLWVkaXQtYXNzZXRzLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIiNhc3NldHMtdGFibGUge1xuICB3aWR0aDogYXV0byAhaW1wb3J0YW50O1xufVxuI2Fzc2V0cy10YWJsZSB0Ym9keSB0cixcbiNhc3NldHMtdGFibGUgdGJvZHkgdHI6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xufVxuI2Fzc2V0cy10YWJsZSB0Ym9keSB0ciB0ZDpsYXN0LWNoaWxkLFxuI2Fzc2V0cy10YWJsZSB0Ym9keSB0cjpob3ZlciB0ZDpsYXN0LWNoaWxkIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuI2Fzc2V0cy10YWJsZSB0Ym9keSB0ci5oZWFkaW5nLFxuI2Fzc2V0cy10YWJsZSB0Ym9keSB0cjpob3Zlci5oZWFkaW5nIHtcbiAgYmFja2dyb3VuZDogI2Y5ZjlmOTtcbn1cbiNhc3NldHMtdGFibGUgdGJvZHkgdHIuaGVhZGluZyB0ZCxcbiNhc3NldHMtdGFibGUgdGJvZHkgdHI6aG92ZXIuaGVhZGluZyB0ZCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG4jYXNzZXRzLXRhYmxlIHRib2R5IHRyLmhlYWRpbmcgdGQgaDMsXG4jYXNzZXRzLXRhYmxlIHRib2R5IHRyOmhvdmVyLmhlYWRpbmcgdGQgaDMge1xuICBtYXJnaW46IDA7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LXNpemU6IDFlbTtcbn1cbiNhc3NldHMtdGFibGUgLnByb2dyZXNzLWJhciB7XG4gIG1hcmdpbi10b3A6IDJweDtcbn1cbiIsIu+7vyNhc3NldHMtdGFibGUge1xyXG4gICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcclxuXHJcbiAgICB0Ym9keSB7XHJcbiAgICAgICAgdHIsIHRyOmhvdmVyIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZmZjtcclxuICAgICAgICAgICAgdGQge1xyXG4gICAgICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJi5oZWFkaW5nIHtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmOWY5Zjk7XHJcbiAgICAgICAgICAgICAgICB0ZCB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaDMge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDFlbTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnByb2dyZXNzLWJhciB7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 */

View File

@@ -13,4 +13,4 @@
margin-top: 2px;
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtZWRpdC1qb2JzLmNzcyIsImNsb3VkbWVkaWEtZWRpdC1qb2JzLmxlc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEFDTEE7RUFDSSxzQkFBQTs7QUFESixXQUdJLE1BQU0sR0FBRyxHQUFFO0VBQ1Asa0JBQUE7O0FBSlIsV0FPSTtFQUNJLGVBQUEiLCJmaWxlIjoiY2xvdWRtZWRpYS1lZGl0LWpvYnMuY3NzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCLvu78jam9icy10YWJsZSB7XG4gICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcblxuICAgIHRib2R5IHRyIHRkOmxhc3QtY2hpbGQge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLnByb2dyZXNzLWJhciB7XG4gICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICB9XG59XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= */
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtZWRpdC1qb2JzLmNzcyIsImNsb3VkbWVkaWEtZWRpdC1qb2JzLmxlc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEFDTEE7RUFDSSx1QkFBQTtDRENIO0FDRkQ7RUFJUSxtQkFBQTtDRENQO0FDTEQ7RUFRUSxnQkFBQTtDREFQIiwiZmlsZSI6ImNsb3VkbWVkaWEtZWRpdC1qb2JzLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIiNqb2JzLXRhYmxlIHtcbiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbn1cbiNqb2JzLXRhYmxlIHRib2R5IHRyIHRkOmxhc3QtY2hpbGQge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4jam9icy10YWJsZSAucHJvZ3Jlc3MtYmFyIHtcbiAgbWFyZ2luLXRvcDogMnB4O1xufVxuIiwi77u/I2pvYnMtdGFibGUge1xyXG4gICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcclxuXHJcbiAgICB0Ym9keSB0ciB0ZDpsYXN0LWNoaWxkIHtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLnByb2dyZXNzLWJhciB7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xyXG4gICAgfVxyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */

View File

@@ -14,4 +14,4 @@
width: 0;
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtcHJvZ3Jlc3MuY3NzIiwiY2xvdWRtZWRpYS1wcm9ncmVzcy5sZXNzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxBQ0hBO0VBQ0ksWUFBQTtFQUNBLFdBQUE7RUFDQSx5QkFBQTs7QUFHSjtFQUNJLFdBQUE7RUFDQSx5QkFBQTtFQUNBLFFBQUEiLCJmaWxlIjoiY2xvdWRtZWRpYS1wcm9ncmVzcy5jc3MiLCJzb3VyY2VzQ29udGVudCI6W251bGwsIu+7v0BvcmNoYXJkLWdyZWVuOiAjODA5ZjQzO1xuXG4ucHJvZ3Jlc3MtYmFyIHtcbiAgICB3aWR0aDogMTgwcHg7XG4gICAgaGVpZ2h0OiAxZW07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbihAb3JjaGFyZC1ncmVlbiwgNDAlKTtcbn1cblxuLnByb2dyZXNzIHtcbiAgICBoZWlnaHQ6IDFlbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBAb3JjaGFyZC1ncmVlbjtcbiAgICB3aWR0aDogMDtcbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtcHJvZ3Jlc3MuY3NzIiwiY2xvdWRtZWRpYS1wcm9ncmVzcy5sZXNzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxBQ0hBO0VBQ0ksYUFBQTtFQUNBLFlBQUE7RUFDQSwwQkFBQTtDRERIO0FDSUQ7RUFDSSxZQUFBO0VBQ0EsMEJBQUE7RUFDQSxTQUFBO0NERkgiLCJmaWxlIjoiY2xvdWRtZWRpYS1wcm9ncmVzcy5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIucHJvZ3Jlc3MtYmFyIHtcbiAgd2lkdGg6IDE4MHB4O1xuICBoZWlnaHQ6IDFlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RjZTdjNztcbn1cbi5wcm9ncmVzcyB7XG4gIGhlaWdodDogMWVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODA5ZjQzO1xuICB3aWR0aDogMDtcbn1cbiIsIu+7v0BvcmNoYXJkLWdyZWVuOiAjODA5ZjQzO1xyXG5cclxuLnByb2dyZXNzLWJhciB7XHJcbiAgICB3aWR0aDogMTgwcHg7XHJcbiAgICBoZWlnaHQ6IDFlbTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oQG9yY2hhcmQtZ3JlZW4sIDQwJSk7XHJcbn1cclxuXHJcbi5wcm9ncmVzcyB7XHJcbiAgICBoZWlnaHQ6IDFlbTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IEBvcmNoYXJkLWdyZWVuO1xyXG4gICAgd2lkdGg6IDA7XHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 */

View File

@@ -29,4 +29,4 @@
border-radius: 0;
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtdGFicy5jc3MiLCJjbG91ZG1lZGlhLXRhYnMubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQTtFQUNJLGFBQUE7RUFDQSxTQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esb0JBQUE7RUFDQSxrQkFBQTs7QUFOSixLQVFJO0VBQ0ksZ0JBQUE7RUFDQSxhQUFBO0VBQ0EsZUFBQTtFQUNBLGNBQUE7RUFDQSxnQkFBQTtFQUNBLFVBQUE7O0FBZFIsS0FRSSxHQVFJO0VBQ0ksaUJBQUE7RUFDQSxnQkFBQTs7QUFsQlosS0FzQkk7RUFDSSx5QkFBQTtFQUNBLGFBQUE7RUFDQSxnQkFBQSIsImZpbGUiOiJjbG91ZG1lZGlhLXRhYnMuY3NzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCLvu78jdGFicyB7IC8vIFNob3VsZCBiZSAudGFicy1jb250YWluZXIgYnV0IHRoYXQgZG9lcyBub3QgZ2FpbiBlbm91Z2ggc3BlY2lmaWNpdHkgdG8gbmVzdGVkIHJ1bGVzIHRvIG92ZXJyaWRlIEpRdWVyeVVJIHN0eWxpbmcuXG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBib3JkZXI6IDA7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcblxuICAgIHVsIHtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgYm9yZGVyLXRvcDogMDtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgICAgICBib3JkZXItbGVmdDogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgcGFkZGluZzogMDtcblxuICAgICAgICBsaSB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudWktdGFicy1wYW5lbCB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNhYWFhYWE7XG4gICAgICAgIGJvcmRlci10b3A6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgfVxufSJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtdGFicy5jc3MiLCJjbG91ZG1lZGlhLXRhYnMubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQTtFQUNJLGNBQUE7RUFDQSxVQUFBO0VBQ0EsaUJBQUE7RUFDQSxXQUFBO0VBQ0EscUJBQUE7RUFDQSxtQkFBQTtDRENIO0FDUEQ7RUFTUSxpQkFBQTtFQUNBLGNBQUE7RUFDQSxnQkFBQTtFQUNBLGVBQUE7RUFDQSxpQkFBQTtFQUNBLFdBQUE7Q0RDUDtBQ2ZEO0VBaUJZLGtCQUFBO0VBQ0EsaUJBQUE7Q0RDWDtBQ25CRDtFQXVCUSwwQkFBQTtFQUNBLGNBQUE7RUFDQSxpQkFBQTtDRERQIiwiZmlsZSI6ImNsb3VkbWVkaWEtdGFicy5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIjdGFicyB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGJvcmRlcjogMDtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgcGFkZGluZzogMDtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbn1cbiN0YWJzIHVsIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyLXRvcDogMDtcbiAgYm9yZGVyLXJpZ2h0OiAwO1xuICBib3JkZXItbGVmdDogMDtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgcGFkZGluZzogMDtcbn1cbiN0YWJzIHVsIGxpIHtcbiAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG59XG4jdGFicyAudWktdGFicy1wYW5lbCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNhYWFhYWE7XG4gIGJvcmRlci10b3A6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG59XG4iLCLvu78jdGFicyB7IC8vIFNob3VsZCBiZSAudGFicy1jb250YWluZXIgYnV0IHRoYXQgZG9lcyBub3QgZ2FpbiBlbm91Z2ggc3BlY2lmaWNpdHkgdG8gbmVzdGVkIHJ1bGVzIHRvIG92ZXJyaWRlIEpRdWVyeVVJIHN0eWxpbmcuXHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgYm9yZGVyOiAwO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcclxuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcclxuXHJcbiAgICB1bCB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcclxuICAgICAgICBib3JkZXItdG9wOiAwO1xyXG4gICAgICAgIGJvcmRlci1yaWdodDogMDtcclxuICAgICAgICBib3JkZXItbGVmdDogMDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xyXG4gICAgICAgIHBhZGRpbmc6IDA7XHJcblxyXG4gICAgICAgIGxpIHtcclxuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA2cHg7XHJcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC51aS10YWJzLXBhbmVsIHtcclxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYWFhYWFhO1xyXG4gICAgICAgIGJvcmRlci10b3A6IDA7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */

View File

@@ -4,9 +4,6 @@
*/
.cloudvideo-player-alt-wrapper {
-moz-background-size: cover;
-o-background-size: cover;
-webkit-background-size: cover;
background-size: cover;
background-color: black;
padding: 1em;
@@ -24,4 +21,4 @@
margin-bottom: 1em;
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtdmlkZW9wbGF5ZXIuY3NzIiwiY2xvdWRtZWRpYS12aWRlb3BsYXllci5sZXNzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxBQ0xBO0VBQ0ksMkJBQUE7RUFDQSx5QkFBQTtFQUNBLDhCQUFBO0VBQ0Esc0JBQUE7RUFDQSx1QkFBQTtFQUNBLFlBQUE7O0FBTkosOEJBUUk7RUFDSSxVQUFBO0VBQ0EsMENBQUE7RUFDQSxrQkFBQTtFQUNBLDJDQUFBO0VBQ0EsWUFBQTtFQUNBLFlBQUE7O0FBZFIsOEJBaUJJO0VBQ0ksY0FBQTtFQUNBLGtCQUFBIiwiZmlsZSI6ImNsb3VkbWVkaWEtdmlkZW9wbGF5ZXIuY3NzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCLvu78uY2xvdWR2aWRlby1wbGF5ZXItYWx0LXdyYXBwZXIge1xuICAgIC1tb3otYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAtby1iYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIC13ZWJraXQtYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xuICAgIHBhZGRpbmc6IDFlbTtcblxuICAgIC5jbG91ZHZpZGVvLXBsYXllci1hbHQtaW5uZXIge1xuICAgICAgICB3aWR0aDogNjAlO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBmYWRlb3V0KHdoaXRlLCA0MCUpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGZhZGVvdXQod2hpdGUsIDE1JSk7XG4gICAgICAgIHBhZGRpbmc6IDFlbTtcbiAgICAgICAgY29sb3I6IGJsYWNrO1xuICAgIH1cblxuICAgIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICAgIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsb3VkbWVkaWEtdmlkZW9wbGF5ZXIuY3NzIiwiY2xvdWRtZWRpYS12aWRlb3BsYXllci5sZXNzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxBQ0xBO0VBSUksdUJBQUE7RUFDQSx3QkFBQTtFQUNBLGFBQUE7Q0RDSDtBQ1BEO0VBU1EsV0FBQTtFQUNBLDJDQUFBO0VBQ0EsbUJBQUE7RUFDQSw0Q0FBQTtFQUNBLGFBQUE7RUFDQSxhQUFBO0NEQ1A7QUNmRDtFQWtCUSxlQUFBO0VBQ0EsbUJBQUE7Q0RBUCIsImZpbGUiOiJjbG91ZG1lZGlhLXZpZGVvcGxheWVyLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jbG91ZHZpZGVvLXBsYXllci1hbHQtd3JhcHBlciB7XG4gIC1tb3otYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgLW8tYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcbiAgcGFkZGluZzogMWVtO1xufVxuLmNsb3VkdmlkZW8tcGxheWVyLWFsdC13cmFwcGVyIC5jbG91ZHZpZGVvLXBsYXllci1hbHQtaW5uZXIge1xuICB3aWR0aDogNjAlO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg1KTtcbiAgcGFkZGluZzogMWVtO1xuICBjb2xvcjogYmxhY2s7XG59XG4uY2xvdWR2aWRlby1wbGF5ZXItYWx0LXdyYXBwZXIgc3BhbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiAxZW07XG59XG4iLCLvu78uY2xvdWR2aWRlby1wbGF5ZXItYWx0LXdyYXBwZXIge1xyXG4gICAgLW1vei1iYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG4gICAgLW8tYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuICAgIC13ZWJraXQtYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcclxuICAgIHBhZGRpbmc6IDFlbTtcclxuXHJcbiAgICAuY2xvdWR2aWRlby1wbGF5ZXItYWx0LWlubmVyIHtcclxuICAgICAgICB3aWR0aDogNjAlO1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGZhZGVvdXQod2hpdGUsIDQwJSk7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGZhZGVvdXQod2hpdGUsIDE1JSk7XHJcbiAgICAgICAgcGFkZGluZzogMWVtO1xyXG4gICAgICAgIGNvbG9yOiBibGFjaztcclxuICAgIH1cclxuXHJcbiAgICBzcGFuIHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAxZW07XHJcbiAgICB9XHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 */

View File

@@ -19,4 +19,4 @@
padding-right: 5px;
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUuY2xvdWRtZWRpYS1tZWRpYXByb3ZpZGVycy5jc3MiLCJtZW51LmNsb3VkbWVkaWEtbWVkaWFwcm92aWRlcnMubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQTtFQUNJLG1CQUFBO0VBQ0EsNkJBQUE7O0FBRUEsNEJBQUM7RUFDRyx3QkFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxxQkFBQTtFQUNBLHdCQUFBO0VBQ0EsU0FBUyxPQUFUO0VBQ0EsZUFBQTtFQUNBLFlBQUE7RUFDQSxrQkFBQSIsImZpbGUiOiJtZW51LmNsb3VkbWVkaWEtbWVkaWFwcm92aWRlcnMuY3NzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCLvu78ubmF2aWNvbi13aW5kb3dzLWF6dXJlLW1lZGlhIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHBhZGRpbmctcmlnaHQ6IDZweCAhaW1wb3J0YW50O1xuXG4gICAgJjpiZWZvcmUge1xuICAgICAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQ7XG4gICAgICAgIGNvbnRlbnQ6ICdcXGYwYzInO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIGNvbG9yOiBibGFjaztcbiAgICAgICAgcGFkZGluZy1yaWdodDogNXB4O1xuICAgIH1cbn0iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= */
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUuY2xvdWRtZWRpYS1tZWRpYXByb3ZpZGVycy5jc3MiLCJtZW51LmNsb3VkbWVkaWEtbWVkaWFwcm92aWRlcnMubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUNMQTtFQUNJLG9CQUFBO0VBQ0EsOEJBQUE7Q0RDSDtBQ0NHO0VBQ0kseUJBQUE7RUFDQSxvQkFBQTtFQUNBLG1CQUFBO0VBQ0Esc0JBQUE7RUFDQSx5QkFBQTtFQUNBLGlCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxhQUFBO0VBQ0EsbUJBQUE7Q0RDUCIsImZpbGUiOiJtZW51LmNsb3VkbWVkaWEtbWVkaWFwcm92aWRlcnMuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLm5hdmljb24td2luZG93cy1henVyZS1tZWRpYSB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHBhZGRpbmctcmlnaHQ6IDZweCAhaW1wb3J0YW50O1xufVxuLm5hdmljb24td2luZG93cy1henVyZS1tZWRpYTpiZWZvcmUge1xuICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQ7XG4gIGNvbnRlbnQ6ICdcXGYwYzInO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGNvbG9yOiBibGFjaztcbiAgcGFkZGluZy1yaWdodDogNXB4O1xufVxuIiwi77u/Lm5hdmljb24td2luZG93cy1henVyZS1tZWRpYSB7XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgcGFkZGluZy1yaWdodDogNnB4ICFpbXBvcnRhbnQ7XHJcblxyXG4gICAgJjpiZWZvcmUge1xyXG4gICAgICAgIGZvbnQtZmFtaWx5OiBGb250QXdlc29tZTtcclxuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0O1xyXG4gICAgICAgIGNvbnRlbnQ6ICdcXGYwYzInO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgICBjb2xvcjogYmxhY2s7XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogNXB4O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 */

View File

@@ -82,7 +82,7 @@ namespace Orchard.Azure.Services.FileSystems {
private static string ConvertToRelativeUriPath(string path) {
var newPath = path.Replace(@"\", "/");
if (newPath.StartsWith("/") || newPath.StartsWith("http://") || newPath.StartsWith("https://")) {
if (newPath.StartsWith("/", StringComparison.OrdinalIgnoreCase) || newPath.StartsWith("http://", StringComparison.OrdinalIgnoreCase) || newPath.StartsWith("https://", StringComparison.OrdinalIgnoreCase)) {
throw new ArgumentException("Path must be relative");
}
@@ -106,7 +106,7 @@ namespace Orchard.Azure.Services.FileSystems {
return path2;
}
if (path2.StartsWith("http://") || path2.StartsWith("https://")) {
if (path2.StartsWith("http://", StringComparison.OrdinalIgnoreCase) || path2.StartsWith("https://", StringComparison.OrdinalIgnoreCase)) {
return path2;
}

View File

@@ -134,7 +134,7 @@ namespace Orchard.Blogs.Commands {
Context.Output.WriteLine(T("Found {0} items", doc.Descendants("item").Count()));
}
catch (Exception ex) {
throw new OrchardException(T("An error occured while loading the feed at {0}.", FeedUrl), ex);
throw new OrchardException(T("An error occurred while loading the feed at {0}.", FeedUrl), ex);
}
var blog = _blogService.Get(BlogId, VersionOptions.Latest);

View File

@@ -0,0 +1,128 @@
using System;
using Orchard.Blogs.Models;
using Orchard.Blogs.Services;
using Orchard.Commands;
using Orchard.ContentManagement;
using Orchard.Widgets.Services;
namespace Orchard.Blogs.Commands {
public class BlogWidgetCommands : DefaultOrchardCommandHandler {
private readonly IWidgetCommandsService _widgetCommandsService;
private readonly IBlogService _blogService;
private readonly IContentManager _contentManager;
private BlogPart blog;
public BlogWidgetCommands(
IWidgetCommandsService widgetCommandsService,
IBlogService blogService,
IContentManager contentManager) {
_widgetCommandsService = widgetCommandsService;
_blogService = blogService;
_contentManager = contentManager;
RenderTitle = true;
}
[OrchardSwitch]
public string Title { get; set; }
[OrchardSwitch]
public string Name { get; set; }
[OrchardSwitch]
public bool RenderTitle { get; set; }
[OrchardSwitch]
public string Zone { get; set; }
[OrchardSwitch]
public string Position { get; set; }
[OrchardSwitch]
public string Layer { get; set; }
[OrchardSwitch]
public string Identity { get; set; }
[OrchardSwitch]
public string Owner { get; set; }
[OrchardSwitch]
public string BlogPath { get; set; }
[OrchardSwitch]
public int BlogId { get; set; }
[OrchardSwitch]
public string Count { get; set; }
[CommandName("blog widget create recentblogposts")]
[CommandHelp("blog widget create recentblogposts /Title:<title> /Name:<name> /Zone:<zone> /Position:<position> /Layer:<layer> (/BlogId:<id> | /BlogPath:<path>) [/Identity:<identity>] [/RenderTitle:true|false] [/Owner:<owner>] [/Count:<count>]\r\n\t" + "Creates a new widget")]
[OrchardSwitches("Title,Name,Zone,Position,Layer,BlogId,BlogPath,Identity,Owner,RenderTitle,Count")]
public void CreateRecentBlogPostsWidget() {
var type = "RecentBlogPosts";
// Check any custom parameters that could cause creating the widget to fail.
blog = GetBlog(BlogId, BlogPath);
if (blog == null) {
Context.Output.WriteLine(T("Creating {0} widget failed: blog was not found.", type));
return;
}
// Create the widget using the standard parameters.
var widget = _widgetCommandsService.CreateBaseWidget(
Context, type, Title, Name, Zone, Position, Layer, Identity, RenderTitle, Owner, null, false, null);
if (widget == null) {
return;
}
// Publish the successfully created widget.
widget.As<RecentBlogPostsPart>().BlogId = blog.Id;
// Setting count to 0 means all posts. It's an optional parameter and defaults to 5.
if (!string.IsNullOrWhiteSpace(Count)) {
int CountAsNumber = 0;
if (Int32.TryParse(Count, out CountAsNumber)) {
widget.As<RecentBlogPostsPart>().Count = CountAsNumber;
}
}
// Publish the successfully created widget.
_widgetCommandsService.Publish(widget);
Context.Output.WriteLine(T("{0} widget created successfully.", type).Text);
}
[CommandName("blog widget create blogarchives")]
[CommandHelp("blog widget create blogarchives /Title:<title> /Name:<name> /Zone:<zone> /Position:<position> /Layer:<layer> (/BlogId:<id> | /BlogPath:<path>) [/Identity:<identity>] [/RenderTitle:true|false] [/Owner:<owner>]\r\n\t" + "Creates a new widget")]
[OrchardSwitches("Title,Name,Zone,Position,Layer,BlogId,BlogPath,Identity,Owner,RenderTitle")]
public void CreateBlogArchivesWidget() {
var type = "BlogArchives";
// Check any custom parameters that could cause creating the widget to fail.
blog = GetBlog(BlogId, BlogPath);
if (blog == null) {
Context.Output.WriteLine(T("Creating {0} widget failed: blog was not found.", type));
return;
}
// Create the widget using the standard parameters.
var widget = _widgetCommandsService.CreateBaseWidget(
Context, type, Title, Name, Zone, Position, Layer, Identity, RenderTitle, Owner, null, false, null);
if (widget == null) {
return;
}
// Set the custom parameters.
widget.As<BlogArchivesPart>().BlogId = blog.Id;
// Publish the successfully created widget.
_widgetCommandsService.Publish(widget);
Context.Output.WriteLine(T("{0} widget created successfully.", type).Text);
}
private BlogPart GetBlog(int blogId, string blogPath) {
return _contentManager.Get<BlogPart>(blogId) ?? _blogService.Get(blogPath);
}
}
}

View File

@@ -93,6 +93,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="AdminMenu.cs" />
<Compile Include="Commands\BlogWidgetCommands.cs" />
<Compile Include="Controllers\RemoteBlogPublishingController.cs" />
<Compile Include="Drivers\BlogArchivesPartDriver.cs" />
<Compile Include="Drivers\RemoteBlogPublishingDriver.cs" />

View File

@@ -19,6 +19,7 @@
<!-- default positioning -->
<Match ContentType="Blog">
<Match DisplayType="Detail">
<Place Parts_Common_Metadata="-"/>
<!-- blog posts currently added to the blog within the controller into Content:5 <Place Parts_Blogs_BlogPost_List="Content:5" /> but...
...placing it in in the Content zone as it's currently implemented to light up the RSS feed for the blog... -->
<!-- Parts_Blogs_RemotePublishing is made available with the "Remote Blog Publishing" feature -->

View File

@@ -17,7 +17,7 @@ namespace Orchard.Blogs.Services {
private readonly ShellSettings _shellSettings;
private readonly IShellDescriptorManager _shellDescriptorManager;
private readonly HashSet<int> _processedBlogParts = new HashSet<int>();
IPathResolutionService _pathResolutionService;
private readonly IPathResolutionService _pathResolutionService;
public BlogService(
IContentManager contentManager,

View File

@@ -1,7 +1,4 @@
@using Orchard.Mvc.Html;
@{
Layout.Title = T("New Blog");
}
<div class="edit-item">
<div class="edit-item-primary">
@if (Model.Content != null) {
@@ -22,4 +19,4 @@
</div>
}
</div>
</div>
</div>

View File

@@ -37,6 +37,6 @@
@Html.UnorderedList(archives, (t, i) => Html.Link(Html.Raw(string.Format("{0} {2} ({1})", monthNames[t.Key.ToDateTime().Month - 1], t.Value, t.Key.ToDateTime().Year)), Url.BlogArchiveMonth((BlogPart)Model.Blog, t.Key.Year, t.Key.Month)), "archiveMonthList")
}
else {
<div class="message info">@T("None found")</div>
<p>@T("There are no posts in the archives.")</p>
}
</div>

View File

@@ -517,7 +517,7 @@ namespace Orchard.CodeGeneration.Commands {
File.SetLastWriteTime(solutionPath, DateTime.Now);
}
catch {
output.WriteLine(T("An unexpected error occured while trying to refresh the Visual Studio solution. Please reload it."));
output.WriteLine(T("An unexpected error occurred while trying to refresh the Visual Studio solution. Please reload it."));
}
}
}

View File

@@ -241,7 +241,7 @@ namespace Orchard.Comments.Services {
_messageService.Send("Email", parameters);
}
catch(Exception e) {
Logger.Error(e, "An unexpected error occured while sending a notification email");
Logger.Error(e, "An unexpected error occurred while sending a notification email");
}
}

View File

@@ -12,6 +12,7 @@ using Orchard.Core.Contents.Settings;
using Orchard.Core.Contents.ViewModels;
using Orchard.DisplayManagement;
using Orchard.Localization;
using Orchard.Localization.Services;
using Orchard.Mvc;
using Orchard.Settings;
using Orchard.Themes;
@@ -22,16 +23,22 @@ namespace Orchard.ContentPicker.Controllers {
private readonly ISiteService _siteService;
private readonly IContentDefinitionManager _contentDefinitionManager;
private readonly INavigationManager _navigationManager;
private readonly ICultureManager _cultureManager;
private readonly ICultureFilter _cultureFilter;
public AdminController(
IOrchardServices orchardServices,
ISiteService siteService,
IContentDefinitionManager contentDefinitionManager,
INavigationManager navigationManager) {
INavigationManager navigationManager,
ICultureManager cultureManager,
ICultureFilter cultureFilter) {
_siteService = siteService;
_contentDefinitionManager = contentDefinitionManager;
_navigationManager = navigationManager;
Services = orchardServices;
_cultureManager = cultureManager;
_cultureFilter = cultureFilter;
T = NullLocalizer.Instance;
}
@@ -123,10 +130,16 @@ namespace Orchard.ContentPicker.Controllers {
break;
}
if (!String.IsNullOrWhiteSpace(model.Options.SelectedCulture)) {
query = _cultureFilter.FilterCulture(query, model.Options.SelectedCulture);
}
model.Options.FilterOptions = contentTypes
.Select(ctd => new KeyValuePair<string, string>(ctd.Name, ctd.DisplayName))
.ToList().OrderBy(kvp => kvp.Value);
model.Options.Cultures = _cultureManager.ListCultures();
var pagerShape = Services.New.Pager(pager).TotalItemCount(query.Count());
var pageOfContentItems = query.Slice(pager.GetStartIndex(), pager.PageSize).ToList();
var list = Services.New.List();

View File

@@ -69,7 +69,7 @@ namespace Orchard.ContentPicker.Drivers {
}
if (settings.Required && field.Ids.Length == 0) {
updater.AddModelError("Id", T("The field {0} is mandatory", field.Name.CamelFriendly()));
updater.AddModelError("Id", T("The {0} field is required.", field.Name.CamelFriendly()));
}
return Editor(part, field, shapeHelper);

View File

@@ -0,0 +1,44 @@
using System.Linq;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
using Orchard.ContentPicker.Fields;
using Orchard.ContentPicker.ViewModels;
using Orchard.Environment.Extensions;
namespace Orchard.ContentPicker.Drivers {
[OrchardFeature("Orchard.ContentPicker.LocalizationExtensions")]
public class ContentPickerFieldLocalizationDriver : ContentFieldDriver<Fields.ContentPickerField> {
private readonly IContentManager _contentManager;
public ContentPickerFieldLocalizationDriver(IContentManager contentManager) {
_contentManager = contentManager;
}
private static string GetPrefix(Fields.ContentPickerField field, ContentPart part) {
return part.PartDefinition.Name + "." + field.Name;
}
private static string GetDifferentiator(Fields.ContentPickerField field, ContentPart part) {
return field.Name;
}
protected override DriverResult Editor(ContentPart part, Fields.ContentPickerField field, dynamic shapeHelper) {
return ContentShape("Fields_ContentPickerLocalization_Edit", GetDifferentiator(field, part),
() => {
var model = new ContentPickerFieldViewModel {
Field = field,
Part = part,
ContentItems = _contentManager.GetMany<ContentItem>(field.Ids, VersionOptions.Latest, QueryHints.Empty).ToList()
};
model.SelectedIds = string.Join(",", field.Ids);
return shapeHelper.EditorTemplate(TemplateName: "Fields/ContentPickerLocalization.Edit", Model: model, Prefix: GetPrefix(field, part));
});
}
protected override DriverResult Editor(ContentPart part, ContentPickerField field, IUpdateModel updater, dynamic shapeHelper) {
return Editor(part, field, shapeHelper);
}
}
}

View File

@@ -0,0 +1,119 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Handlers;
using Orchard.ContentPicker.Fields;
using Orchard.ContentPicker.Settings;
using Orchard.Environment.Extensions;
using Orchard.Localization;
using Orchard.Localization.Models;
using Orchard.Localization.Services;
using Orchard.UI.Notify;
namespace Orchard.ContentPicker.Handlers {
[OrchardFeature("Orchard.ContentPicker.LocalizationExtensions")]
public class ContentPickerFieldLocalizationExtensionHandler : ContentHandler {
private readonly IOrchardServices _orchardServices;
private readonly IContentManager _contentManager;
private readonly ILocalizationService _localizationService;
public Localizer T { get; set; }
public ContentPickerFieldLocalizationExtensionHandler(
IOrchardServices orchardServices,
IContentManager contentManager,
ILocalizationService localizationService) {
_orchardServices = orchardServices;
_contentManager = contentManager;
_localizationService = localizationService;
T = NullLocalizer.Instance;
}
protected override void UpdateEditorShape(UpdateEditorContext context) {
base.UpdateEditorShape(context);
//Here we implement the logic based on the settings introduced in ContentPickerFieldLocalizationSettings
//These settings should only be active if the ContentItem that is being updated has a LocalizationPart
if (context.ContentItem.Parts.Any(part => part is LocalizationPart)) {
var lPart = (LocalizationPart)context.ContentItem.Parts.Single(part => part is LocalizationPart);
var fields = context.ContentItem.Parts.SelectMany(x => x.Fields.Where(f => f.FieldDefinition.Name == typeof(ContentPickerField).Name)).Cast<ContentPickerField>();
foreach (var field in fields) {
var settings = field.PartFieldDefinition.Settings.GetModel<ContentPickerFieldLocalizationSettings>();
if (settings.TryToLocalizeItems) {
//try to replace items in the field with their translation
var itemsInField = _contentManager.GetMany<ContentItem>(field.Ids, VersionOptions.Published, QueryHints.Empty);
if (settings.RemoveItemsWithNoLocalizationPart && itemsInField.Where(ci => !ci.Parts.Any(part => part is LocalizationPart)).Any()) {
//keep only items that have a LocalizationPart
_orchardServices.Notifier.Warning(T(
"{0}: The following items could have no localization, so they were removed: {1}",
field.DisplayName,
string.Join(", ", itemsInField.Where(ci => !ci.Parts.Any(part => part is LocalizationPart)).Select(ci => _contentManager.GetItemMetadata(ci).DisplayText))
));
itemsInField = itemsInField.Where(ci => ci.Parts.Any(part => part is LocalizationPart));
}
//use an (int, int) tuple to track translations
var newIds = itemsInField.Select(ci => {
if (ci.Parts.Any(part => part is LocalizationPart)) {
if (_localizationService.GetContentCulture(ci) == lPart.Culture.Culture)
return new Tuple<int, int>(ci.Id, ci.Id); //this item is fine
var localized = _localizationService.GetLocalizations(ci).FirstOrDefault(lp => lp.Culture == lPart.Culture);
return localized == null ? new Tuple<int, int>(ci.Id, -ci.Id) : new Tuple<int, int>(ci.Id, localized.Id); //return negative id where we found no translation
}
else {
//we only go here if RemoveItemsWithNoLocalizationPart == false
return new Tuple<int, int>(ci.Id, ci.Id);
}
});
if (newIds.Any(tup => tup.Item2 < 0)) {
if (settings.RemoveItemsWithoutLocalization) {
//remove the items for which we could not find a localization
_orchardServices.Notifier.Warning(T(
"{0}: We could not find a localization for the following items, so they were removed: {1}",
field.DisplayName,
string.Join(", ", newIds.Where(tup => tup.Item2 < 0).Select(tup => _contentManager.GetItemMetadata(_contentManager.GetLatest(tup.Item1)).DisplayText))
));
newIds = newIds.Where(tup => tup.Item2 > 0);
}
else {
//negative Ids are made positive again
newIds = newIds.Select(tup => tup = new Tuple<int, int>(tup.Item1, Math.Abs(tup.Item2)));
}
}
if (newIds.Where(tup => tup.Item1 != tup.Item2).Any()) {
_orchardServices.Notifier.Warning(T(
"{0}: The following items were replaced by their correct localization: {1}",
field.DisplayName,
string.Join(", ", newIds.Where(tup => tup.Item1 != tup.Item2).Select(tup => _contentManager.GetItemMetadata(_contentManager.GetLatest(tup.Item1)).DisplayText))
));
}
field.Ids = newIds.Select(tup => tup.Item2).Distinct().ToArray();
}
if (settings.AssertItemsHaveSameCulture) {
//verify that the items in the ContentPickerField are all in the culture of the ContentItem whose editor we are updating
var itemsInField = _contentManager.GetMany<ContentItem>(field.Ids, VersionOptions.Published, QueryHints.Empty);
var itemsWithoutLocalizationPart = itemsInField.Where(ci => !ci.Parts.Any(part => part is LocalizationPart));
List<int> badItemIds = itemsInField.Where(ci => ci.Parts.Any(part => part is LocalizationPart && ((LocalizationPart)part).Culture != lPart.Culture)).Select(ci => ci.Id).ToList();
if (itemsWithoutLocalizationPart.Count() > 0) {
//Verify items from the ContentPickerField that cannot be localized
_orchardServices.Notifier.Warning(T("{0}: Some of the selected items cannot be localized: {1}",
field.DisplayName,
string.Join(", ", itemsWithoutLocalizationPart.Select(ci => _contentManager.GetItemMetadata(ci).DisplayText))
));
if (settings.BlockForItemsWithNoLocalizationPart) {
badItemIds.AddRange(itemsWithoutLocalizationPart.Select(ci => ci.Id));
}
}
if (badItemIds.Count > 0) {
context.Updater.AddModelError(field.DisplayName, T("Some of the items selected have the wrong localization: {0}",
string.Join(", ", badItemIds.Select(id => _contentManager.GetItemMetadata(_contentManager.GetLatest(id)).DisplayText))
));
}
}
}
}
}
}
}

View File

@@ -10,3 +10,8 @@ Features:
Description: UI for selecting Content Items.
Dependencies: Contents, Navigation
Category: Input Editor
Orchard.ContentPicker.LocalizationExtensions:
Name: Orchard.ContentPicker.LocalizationExtensions
Description: Provides settings to enable advanced localization behaviours for ContentPickerFields.
Dependencies: Orchard.ContentPicker, Orchard.Localization, Orchard.Resources
Category: Input Editor

View File

@@ -98,6 +98,10 @@
<Reference Include="System.Xml.Linq" />
</ItemGroup>
<ItemGroup>
<Compile Include="Drivers\ContentPickerFieldLocalizationDriver.cs" />
<Compile Include="Handlers\ContentPickerFieldLocalizationExtensionHandler.cs" />
<Compile Include="Settings\ContentPickerFieldLocalizationEditorEvents.cs" />
<Compile Include="Settings\ContentPickerFieldLocalizationSettings.cs" />
<Compile Include="ViewModels\NavigationPartViewModel.cs" />
<Content Include="Scripts\ContentPicker.js" />
<Content Include="Scripts\SelectableContentTab.js" />
@@ -180,6 +184,10 @@
<Name>Orchard.Core</Name>
<Private>false</Private>
</ProjectReference>
<ProjectReference Include="..\Orchard.Localization\Orchard.Localization.csproj">
<Project>{fbc8b571-ed50-49d8-8d9d-64ab7454a0d6}</Project>
<Name>Orchard.Localization</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="Views\ContentPicker.Edit.cshtml" />
@@ -187,6 +195,12 @@
<ItemGroup>
<Content Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\DefinitionTemplates\ContentPickerFieldLocalizationSettings.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\EditorTemplates\Fields\ContentPickerLocalization.Edit.cshtml" />
</ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>

View File

@@ -1,5 +1,6 @@
<Placement>
<Place Fields_ContentPicker_Edit="Content:2.3"/>
<Place Fields_ContentPickerLocalization_Edit="Content:2.3"/>
<Place Parts_Navigation_Edit="Content:10"/>
<Place Parts_ContentMenuItem_Edit="Content:10"/>

View File

@@ -0,0 +1,38 @@
using System.Collections.Generic;
using System.Globalization;
using Orchard.ContentManagement;
using Orchard.ContentManagement.MetaData;
using Orchard.ContentManagement.MetaData.Builders;
using Orchard.ContentManagement.MetaData.Models;
using Orchard.ContentManagement.ViewModels;
using Orchard.Environment.Extensions;
namespace Orchard.ContentPicker.Settings {
[OrchardFeature("Orchard.ContentPicker.LocalizationExtensions")]
public class ContentPickerFieldLocalizationEditorEvents : ContentDefinitionEditorEventsBase {
public override IEnumerable<TemplateViewModel> PartFieldEditor(ContentPartFieldDefinition definition) {
if (definition.FieldDefinition.Name == "ContentPickerField") {
var model = definition.Settings.GetModel<ContentPickerFieldLocalizationSettings>();
yield return DefinitionTemplate(model);
}
}
public override IEnumerable<TemplateViewModel> PartFieldEditorUpdate(ContentPartFieldDefinitionBuilder builder, IUpdateModel updateModel) {
if (builder.FieldType != "ContentPickerField") {
yield break;
}
var model = new ContentPickerFieldLocalizationSettings();
if (updateModel.TryUpdateModel(model, "ContentPickerFieldLocalizationSettings", null, null)) {
builder.WithSetting("ContentPickerFieldLocalizationSettings.TryToLocalizeItems", model.TryToLocalizeItems.ToString(CultureInfo.InvariantCulture));
builder.WithSetting("ContentPickerFieldLocalizationSettings.RemoveItemsWithoutLocalization", model.RemoveItemsWithoutLocalization.ToString(CultureInfo.InvariantCulture));
builder.WithSetting("ContentPickerFieldLocalizationSettings.RemoveItemsWithNoLocalizationPart", model.RemoveItemsWithNoLocalizationPart.ToString(CultureInfo.InvariantCulture));
builder.WithSetting("ContentPickerFieldLocalizationSettings.AssertItemsHaveSameCulture", model.AssertItemsHaveSameCulture.ToString(CultureInfo.InvariantCulture));
builder.WithSetting("ContentPickerFieldLocalizationSettings.BlockForItemsWithNoLocalizationPart", model.BlockForItemsWithNoLocalizationPart.ToString(CultureInfo.InvariantCulture));
}
yield return DefinitionTemplate(model);
}
}
}

View File

@@ -0,0 +1,16 @@
using Orchard.Environment.Extensions;
namespace Orchard.ContentPicker.Settings {
[OrchardFeature("Orchard.ContentPicker.LocalizationExtensions")]
public class ContentPickerFieldLocalizationSettings {
public ContentPickerFieldLocalizationSettings() {
TryToLocalizeItems = true;
}
public bool TryToLocalizeItems { get; set; }
public bool RemoveItemsWithoutLocalization { get; set; }
public bool RemoveItemsWithNoLocalizationPart { get; set; }
public bool AssertItemsHaveSameCulture { get; set; }
public bool BlockForItemsWithNoLocalizationPart { get; set; }
}
}

Some files were not shown because too many files have changed in this diff Show More