Skip to content

Commit 45dedd1

Browse files
committed
- Added migration to set default Experience Mode on startup/install.
1 parent adff691 commit 45dedd1

File tree

3 files changed

+250
-0
lines changed

3 files changed

+250
-0
lines changed

Rock.Migrations/Migrations/202512101823064_SetDefaultExperienceMode.Designer.cs

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
// <copyright>
2+
// Copyright by the Spark Development Network
3+
//
4+
// Licensed under the Rock Community License (the "License");
5+
// you may not use this file except in compliance with the License.
6+
// You may obtain a copy of the License at
7+
//
8+
// http://www.rockrms.com/license
9+
//
10+
// Unless required by applicable law or agreed to in writing, software
11+
// distributed under the License is distributed on an "AS IS" BASIS,
12+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
// See the License for the specific language governing permissions and
14+
// limitations under the License.
15+
// </copyright>
16+
//
17+
namespace Rock.Migrations
18+
{
19+
/// <summary>
20+
///
21+
/// </summary>
22+
public partial class SetDefaultExperienceMode : Rock.Migrations.RockMigration
23+
{
24+
/// <summary>
25+
/// Operations to be performed during the upgrade process.
26+
/// </summary>
27+
public override void Up()
28+
{
29+
RockMigrationHelper.AddOrUpdateEntityType( "Rock.Blocks.Administration.ChooseExperienceMode", "3733A532-9F34-418C-8EDB-EF07D6112907", false, false );
30+
RockMigrationHelper.AddOrUpdateEntityBlockType( "Choose Experience Mode",
31+
"Presents a panel that allows the administrator to choose the default experience after a fresh Rock install.",
32+
"Rock.Blocks.Administration.ChooseExperienceMode",
33+
"Administration",
34+
"47418BF9-DDF0-4C12-92A0-667A3C1209D2" );
35+
36+
Sql( @"
37+
IF EXISTS (SELECT * FROM [Attribute] WHERE [Key] = 'RockInstanceId' AND [EntityTypeQualifierColumn] = 'SystemSetting' AND [CreatedDateTime] IS NOT NULL)
38+
BEGIN
39+
-- This is an upgrade. Default to Trailblazer mode.
40+
IF EXISTS (SELECT * FROM [Attribute] WHERE [Key] = 'core_TrailblazerMode' AND [EntityTypeQualifierColumn] = 'SystemSetting')
41+
BEGIN
42+
UPDATE [Attribute]
43+
SET [DefaultValue] = 'True'
44+
WHERE [Key] = 'core_TrailblazerMode' AND [EntityTypeQualifierColumn] = 'SystemSetting'
45+
END
46+
ELSE
47+
BEGIN
48+
DECLARE @FieldTypeId INT = (SELECT TOP 1 [Id] FROM [FieldType] WHERE [Guid] = '9C204CD0-1233-41C5-818A-C5DA439445AA')
49+
50+
INSERT INTO [Attribute]
51+
([IsSystem], [FieldTypeId], [Key], [Name], [IsGridColumn], [IsMultiValue], [IsRequired], [EntityTypeQualifierColumn], [EntityTypeQualifierValue], [Order], [DefaultValue], [Guid])
52+
VALUES
53+
(0, 1, 'core_TrailblazerMode', 'core _ Trailblazer Mode', 0, 0, 0, 'SystemSetting', '', 0, 'True', NEWID())
54+
END
55+
END
56+
ELSE
57+
BEGIN
58+
PRINT 'New Install'
59+
-- This is a new install. Add the Choose Experience Mode block.
60+
IF NOT EXISTS (SELECT * FROM [Block] WHERE [Guid] = '00ad1f50-dc25-46e9-9790-850d46be20cb')
61+
BEGIN
62+
DECLARE @PageId INT = (SELECT TOP 1 [Id] FROM [Page] WHERE [Guid] = '20F97A93-7949-4C2A-8A5E-C756FE8585CA')
63+
DECLARE @BlockTypeId INT = (SELECT TOP 1 [Id] FROM [BlockType] WHERE [Guid] = '47418bf9-ddf0-4c12-92a0-667a3c1209d2')
64+
DECLARE @EntityTypeId INT = (SELECT TOP 1 [Id] FROM [EntityType] WHERE [Name] = 'Rock.Model.Block')
65+
66+
-- Shift everything in the Main zone on that page up 1 Order value.
67+
UPDATE [Block]
68+
SET [Order] = [Order] + 1
69+
WHERE [PageId] = @PageId AND [Zone] = 'Main'
70+
71+
-- Install the new black at the top.
72+
INSERT INTO [Block]
73+
(
74+
[IsSystem], [PageId], [BlockTypeId], [Zone],
75+
[Order], [Name], [PreHtml], [PostHtml], [OutputCacheDuration],
76+
[Guid]
77+
)
78+
VALUES
79+
(
80+
1, @PageId, @BlockTypeId, 'Main',
81+
0, 'Choose Experience Mode', '', '', 0,
82+
'00ad1f50-dc25-46e9-9790-850d46be20cb'
83+
)
84+
END
85+
END" );
86+
}
87+
88+
/// <summary>
89+
/// Operations to be performed during the downgrade process.
90+
/// </summary>
91+
public override void Down()
92+
{
93+
RockMigrationHelper.DeleteBlock( "00ad1f50-dc25-46e9-9790-850d46be20cb" );
94+
95+
RockMigrationHelper.DeleteBlockType( "47418BF9-DDF0-4C12-92A0-667A3C1209D2" );
96+
}
97+
}
98+
}
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<root>
3+
<!--
4+
Microsoft ResX Schema
5+
6+
Version 2.0
7+
8+
The primary goals of this format is to allow a simple XML format
9+
that is mostly human readable. The generation and parsing of the
10+
various data types are done through the TypeConverter classes
11+
associated with the data types.
12+
13+
Example:
14+
15+
... ado.net/XML headers & schema ...
16+
<resheader name="resmimetype">text/microsoft-resx</resheader>
17+
<resheader name="version">2.0</resheader>
18+
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19+
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20+
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21+
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22+
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23+
<value>[base64 mime encoded serialized .NET Framework object]</value>
24+
</data>
25+
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26+
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27+
<comment>This is a comment</comment>
28+
</data>
29+
30+
There are any number of "resheader" rows that contain simple
31+
name/value pairs.
32+
33+
Each data row contains a name, and value. The row also contains a
34+
type or mimetype. Type corresponds to a .NET class that support
35+
text/value conversion through the TypeConverter architecture.
36+
Classes that don't support this are serialized and stored with the
37+
mimetype set.
38+
39+
The mimetype is used for serialized objects, and tells the
40+
ResXResourceReader how to depersist the object. This is currently not
41+
extensible. For a given mimetype the value must be set accordingly:
42+
43+
Note - application/x-microsoft.net.object.binary.base64 is the format
44+
that the ResXResourceWriter will generate, however the reader can
45+
read any of the formats listed below.
46+
47+
mimetype: application/x-microsoft.net.object.binary.base64
48+
value : The object must be serialized with
49+
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50+
: and then encoded with base64 encoding.
51+
52+
mimetype: application/x-microsoft.net.object.soap.base64
53+
value : The object must be serialized with
54+
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55+
: and then encoded with base64 encoding.
56+
57+
mimetype: application/x-microsoft.net.object.bytearray.base64
58+
value : The object must be serialized into a byte array
59+
: using a System.ComponentModel.TypeConverter
60+
: and then encoded with base64 encoding.
61+
-->
62+
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63+
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64+
<xsd:element name="root" msdata:IsDataSet="true">
65+
<xsd:complexType>
66+
<xsd:choice maxOccurs="unbounded">
67+
<xsd:element name="metadata">
68+
<xsd:complexType>
69+
<xsd:sequence>
70+
<xsd:element name="value" type="xsd:string" minOccurs="0" />
71+
</xsd:sequence>
72+
<xsd:attribute name="name" use="required" type="xsd:string" />
73+
<xsd:attribute name="type" type="xsd:string" />
74+
<xsd:attribute name="mimetype" type="xsd:string" />
75+
<xsd:attribute ref="xml:space" />
76+
</xsd:complexType>
77+
</xsd:element>
78+
<xsd:element name="assembly">
79+
<xsd:complexType>
80+
<xsd:attribute name="alias" type="xsd:string" />
81+
<xsd:attribute name="name" type="xsd:string" />
82+
</xsd:complexType>
83+
</xsd:element>
84+
<xsd:element name="data">
85+
<xsd:complexType>
86+
<xsd:sequence>
87+
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88+
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89+
</xsd:sequence>
90+
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91+
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92+
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93+
<xsd:attribute ref="xml:space" />
94+
</xsd:complexType>
95+
</xsd:element>
96+
<xsd:element name="resheader">
97+
<xsd:complexType>
98+
<xsd:sequence>
99+
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100+
</xsd:sequence>
101+
<xsd:attribute name="name" type="xsd:string" use="required" />
102+
</xsd:complexType>
103+
</xsd:element>
104+
</xsd:choice>
105+
</xsd:complexType>
106+
</xsd:element>
107+
</xsd:schema>
108+
<resheader name="resmimetype">
109+
<value>text/microsoft-resx</value>
110+
</resheader>
111+
<resheader name="version">
112+
<value>2.0</value>
113+
</resheader>
114+
<resheader name="reader">
115+
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116+
</resheader>
117+
<resheader name="writer">
118+
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119+
</resheader>
120+
<data name="DefaultSchema" xml:space="preserve">
121+
<value>dbo</value>
122+
</data>
123+
</root>

0 commit comments

Comments
 (0)