0:15
SC Scot's still
0:23
alive hey everybody hey how's it going
0:31
good excellent hey hello
0:37
hey anybody else get an echo yes there is quite a bad Echo
0:44
um if if you're not if you don't want to chat right now just go ahead and mute yourselves that'd be great that way we
0:49
can try to reduce the echo in a busy day Joe just sort without
0:56
a ticket because Sean's popping over here on Monday excellent whoever muted yourself oh oh I
1:03
still hear an echo quite a few of them let's try that no still going
1:13
on interesting while you're talking my microphone's going up as
1:27
well okay just C curious uh raise hands who's uh who's used the current beta so
1:35
far or not not the one the beta in general not the version I just shipped yesterday or two days ago whenever it
1:41
was so so okay Matias up Bill is that a hand raised no
1:53
okay oh yeah Gary Gary's us I didn't I didn't even see you here Gary how's it going yeah he's he's been playing yeah
2:00
good thanks excellent we shall be playing in the
2:05
next couple of weeks lot more with it sweet yeah I've been using a Joe oh of
2:15
course between you and Ben you guys are really exercising it Dave Dave mute mute yourself for a
2:22
second I think it might be you hello hello hello oh oh yeah yep
2:30
Dave you were causing the echo Dave unmute yourself when you want to chat okay yeah no because when you were
2:36
talking it's coming through the microphone here oh okay got it
2:43
yeah what up what's happening you know just chilling
2:50
sweet we we'll wait a few minutes before we get started let uh enough people come
2:57
in just quickly Josh um that Stack's brilliant we've got a lot of that working I tell you yeah you liking the
3:04
stack y that's good I I I've secretly launched it nobody knows I've launched
3:09
the stack yet oh I was just about to say I didn't know you launched it yet cool now it's been live since uh last weekend
3:16
but I uh I haven't had time to get to the video yet um and because of some people's feedback it's actually going to
3:23
help me make a better video so hey you you pulled a Joe Workman good job that's
3:28
yeah I know somebody else just purchased it today and I'm like oh someone's sleuthing my website they know that it's
3:33
there but I haven't told anyone but for those on the call I released my uh feeds
3:39
table Pro stack it's an HTML um it's an HTML uh table creator
3:46
that if you use it with feeds you can then feed all the data for the table with feeds uh it has search short and
3:54
sorting um uh instance search so as you type it's search as you type um yeah
4:00
it's it's pretty awesome um I like it I ended up I built it because I was building it for another client site that
4:06
I was working on and in the end I thought just be better to turn this into a stack and then it's spiraled out of
4:12
control from
4:22
there mosimo you don't need a webcam to hang out hopefully you're here I saw you in the
4:27
chat um oh oh yeah you're here cool I'll put a link in the chat if if Joe doesn't mind
4:34
go for it um okay uh let's get cooking so uh this is
4:42
a new service that I'm still playing around with and getting the let's see if
4:50
I if I go like this do you guys see just me just curious no Joe if you go up to
4:56
the top right and um where when you click on that gallery mode there's a button that says um like force there's a
5:03
toggle uhhuh and then you will force people into your View mode so if you
5:09
turn yours to audience and then you flip that toggle it will push everybody into that same view got it okay yeah see me
5:17
now but you can kind of see everyone else up on top just for fun yeah okay cool interesting okay
5:25
um sweet so um total cms3 okay um it is a
5:34
completely different Beast um than total cms1 okay um it
5:42
is uh conceptually the same okay um but
5:49
the implementation um not one line of code was brought from total cms1 okay um
5:56
it is completely Rewritten actual completely Rewritten multiple times now that hence why it's total CS 3 and not
6:03
total CMS 2 okay technically actually it should be total CMS 4 okay I I actually
6:09
have Rewritten total cms1 this is the third iteration okay um so yeah what
6:16
five years I've been working on it something around there which is pretty nuts okay um I'm really really happy
6:23
with how it's turned out um or how it's turning out okay um and I think I nailed
6:28
it I I think it's really good um and as a use case you know we
6:35
were just chatting about feeds and hopefully most of you probably
6:40
know feeds um really the the entire purpose of feeds or my or one of my my
6:47
dirty ultimatums or uh you know behind the scenes things I wanted to do with feeds was to test some things right um
6:55
so as you know feed feeds uses something called twig it is a templ engine okay um it's uh has all those
7:03
little macros that let you insert data and I I wanted to to use that in total
7:08
CMS and I'm like um I didn't want to go all in on it until I
7:14
knew that it would fit well with the community um
7:20
hence I I implemented uh feeds okay um and as you know feeds uses twig um and I
7:28
think it was a grand slam okay I know feeds is a very powerful stack I know many of you here love it okay if you
7:36
love uh feeds you are going to want to go to bed with total CS
7:43
okay um it is it is really awesome okay um I've taken the Implement what I did
7:49
with feeds and then gone a lot farther okay um it's much more powerful um and
7:55
it it pretty much is like a Maring of total cms1 with feeds okay um sort of in
8:03
a way okay along with a whole bunch of other
8:10
stuff now um this is a beta and um earlier on in beta 1 if you were at the
8:17
I did a live stream with the beta 1 stuff I was open and saying hey this is
8:23
a beta um please use this as much as you can obviously uh some people are already
8:30
actively building websites with it which is pretty awesome um but it is a beta
8:36
and you do that at your own risk right obviously because I say that because I I
8:42
still am willing to break things between one Beta release to the next in order to
8:48
it to make a better shipped product okay at this stage I'm I'm less likely
8:56
to ship breaking changes actually I have one that's a slightly breaking change it's going to ship in beta 7 I'll show
9:03
that off today okay um but yeah it's just something that I felt had to be
9:08
done for the shipped product okay um and for existing users again I'll review
9:13
what that is um it's not a huge deal but it is it is a thing
9:18
okay um
9:26
so I'm using this also as a way for me to learn and to be better at teaching total
9:32
CMS so I'm probably going to Fumble a little bit here experimenting with ideas on the order in which I teach things and
9:40
and whatnot so please feel free as I'm chatting to um chime in and ask for
9:47
clarifying questions okay it's okay um I'll try to watch the chat as well so uh
9:53
for those that can't speak um you can type in your questions and I will try to
9:59
um you know feel those as I go okay before we get too far onto a different
10:04
subject okay um so before I kind of dive into um total CMS 3 is are there any
10:12
questions um to start off
10:17
with no not not a single one okay um let's go ahead and dive in
10:26
uh so let's go ahead and uh let's see share where is the share thing there it is share I'll share my whole
10:36
screen oh you guys see my screen now yes yes excellent okay
10:46
perfect okay um let me go ahead and one
10:57
second where
11:04
all right now I know I know people like this little doohickey that I use sometimes so do you guys see the little
11:10
circle around my mouse yeah yeah okay perfect okay cool um we are going to
11:16
start off with actually you know be before before
11:22
I start off with um sharing my screen I want to I want to talk a a little bit
11:27
about vocabulary okay some some some words and how total CMS 3 is structured
11:33
okay before I start diving in um so uh hopefully most most of you
11:39
here are most likely uh familiar with total CMS blog okay and how it has been
11:47
abused over the past five or six seven years to do all kinds of other things
11:53
besides a Blog but nowadays it's probably used for non-blogging purposes
11:58
than it is is a Blog okay um it is it very well abused okay and that's okay
12:05
because it's what we had and we did amazing things with it okay um but not
12:12
everything can be a Blog right so um we have a new vocabulary in total CMS 3
12:19
okay um because in total CMS 3 um well let me say in total CS one blog is very
12:27
powerful and total CS3 uses that blog
12:32
style architecture and goes all in with that okay so um in total CS 3 we have
12:42
everything is a collection okay think of a collection as
12:48
a Blog okay but it it is a collection of objects okay in total cms1 terms that is
12:57
a Blog that has blog posts but a collection can be a collection of
13:02
objects of whatever you want it to be it could be a product it could be a campsite it could be um an event it
13:10
could be whatever you want okay a person a location okay now what defines what that
13:18
object is is something called a schema and a schema You' probably heard are
13:26
familiar with this term it's a database term and um that pretty much defines you define
13:33
What fields are available in total CS 3 these fields are called properties okay so we have schemas that
13:41
Define what an object is um we can have a collection of objects and then those
13:47
objects have properties a property could be an image a gallery pretty much all
13:53
the fields that we had available in total cms1 gallery image Depot file text
13:58
Style text number all that stuff okay um those are all Fields so we can create a
14:06
property that has as many of those fields as we want okay um as many or as little right
14:15
um we're not limited to um what I've defined in a blog okay
14:22
and uh that's super powerful because you now get to you're not limited by the fields that Blog has but even better
14:30
than that okay and I think uh uh Bill Burton who's here uh can be a testament
14:36
to that that being able to name these properties whatever you want is a
14:42
godsend okay because I know he I know he's he's built some custom stuff already and played around with the beta
14:48
and um he he's liking that right and it's amazing because you no longer need
14:54
to um in in the current days if you wanted to use blog as something else you need need to know I'm using label for
15:01
the price and I'm using author for the location or something like that right where you you had to like mentally map
15:08
and a lot of people use spreadsheets to map all this data out and um it was confusing and annoying right um so not
15:16
having to do that anymore is going to be really really great there's your marketing Ploy Joy
15:22
Joe really know total CMS for people with aging memories
15:30
excellent excellent okay um now I guess I should talk about um there are going to be
15:36
three additions of total CMS um total CMS 3 there's going to be
15:41
light standard and professional okay um and light is essentially going to be
15:48
easy CMS okay easy CMS will be going away okay uh once total CMS 3 is
15:53
launched the current version of total CMS and easy CMS will be gone okay okay
16:00
um total cms3 will be
16:06
um charged per domain even the light version okay um I haven't fully released
16:12
all the pricing yet uh you guys have seen some of the pricing right I think uh standard is going to be uh 159 Pro is
16:19
359 um I haven't quite settled on what the light version will be okay um
16:25
essentially the light version will be similar two easy CMS um I am adding some
16:31
stuff though you're GNA we're going to have gallery and we're going to have feeds okay uh feeds being the total CMS
16:38
feed okay not feeds the stack okay um so it'll be like a very an extremely light
16:45
blog okay um will be in the light version then what we're gonna have
16:51
standard uh which is essentially um the current version of total CMS so you have blog and everything else and then
16:58
there's going to be a bunch of new features that you'll get access to there's a really great uh image engine
17:04
um that actually light will get access to as well um now professional um the
17:10
professional version will have uh support custom collections so if you want to create your custom collection
17:15
and name add as many fields as you want name the properties whatever you want um
17:21
as well as there there's going to be some other uh additional features and and stuff that Pro will unlock um I
17:27
haven't ironed out all of those details yet okay I do have to say that the current beta everybody gets Pro during
17:34
the beta okay um eventually when the product is shipped whatever version
17:40
you've purchased okay some of you have purchased Pro some of you uh purchas The
17:45
Standard Version um uh once we ship we will have the ability to you know you'll
17:51
get locked down to whatever your license um is done or available with okay um any
17:58
questions on this overview or the three different versions um that I can answer
18:04
before we dive dive into the actual
18:10
CMS no man I gu did a yeah will there be an upgrade oh yes um so great question um
18:18
there will be upgrade pricing so you can upgrade your existing total CMS instances to Total CMS um whether that
18:26
be um there will be no upgrade path from Total CMS to Total CMS light I I don't
18:32
think that makes sense um there will be upgrade paths from Total CMS to standard or Pro I don't know what that pricing uh
18:39
will be yet okay um as well as I will have the
18:45
ability to again I haven't done this yet either but the ability to migrate your data okay so all of your existing text
18:53
and images and Galleries and um blogs uh can be migrated to Total CS 3 okay um
19:03
now this does not include um if you're using Stacks okay so um the stacks are
19:09
very different uh I think it will be easier it'll be well it will be much
19:16
easier than let's say the foundation one to Foundation 6 migration where you kind of had to redesign your entire site um
19:22
you're not going to have to redesign your whole site but you will have to redo the total CMS bits of it
19:29
okay um so yeah there will be some work uh if you're using the total cms1
19:36
macros um I'm going to try I haven't tested this out yet but I don't see why
19:41
there would be any uh reason why I can't build some sort of add-on that
19:49
will interpret the total cs1 macros and into total CMS 3 macros okay um it will
19:57
probably be something that's off by default that you can then add to the page and it will just be some sort of
20:02
like interpolation um or translation that's a better word a translation uh between uh
20:09
the macros and um the current twig syntax in total CS
20:15
3 okay um good question there um yeah oh another thing I do want to
20:22
say is um I total cms3 is actually built uh it is built to be a standalone
20:27
product as well um obviously right now I'm honing in and
20:34
making sure that it all works within stacks and we're building it with with Stacks however total cms3 I I do plan on
20:42
shipping it as a standalone product and Market it to other web developers that maybe are not Stacks users okay um right
20:50
now that market will be pretty much people that know how to code um and they're going to be coders and this is
20:56
pretty much someone who likes design or build a website but doesn't want to have to build you know an entire CMS to
21:02
manage the data uh total CMS will be that for you okay um so yeah uh maybe
21:09
that will go other routes in the future um but as of right now total CS is a it
21:14
it will be a standalone product um however it's I love stacks and so uh
21:20
yeah it's going to work 100% uh with Stacks as well okay sweet okay without further ado let
21:28
let me well I can't shut up but let's stop looking at my ugly mug and uh let's
21:34
share my screen okay curious when I when I share my
21:41
screen do you see the sessions window right now I'm just curious is it clever like Zoom where it hides itself it says
21:48
you are now sharing your screen oh okay got it yeah you hit ignore it turns
21:54
into an Inception window and it just layers upon layers of oh really oh
22:00
interesting okay cool I just want to make sure that it did do that okay cool um right let's open up a
22:07
browser um so another huge game changer for total CS which was just shipped a
22:13
week ago or around a week ago okay um was let's go
22:23
to hey and that's probably why I I know a lot of you are excited about the the current current version of total CMS is
22:30
because it has an entire Made For You admin system
22:36
okay um so this dashboard um is basically now can be used as your admin
22:44
area for total CMS um you're not required to use this
22:49
um actually before I built all of this this admin area I made sure that we can
22:56
still build custom admin web pages and we'll see that in a little bit first but
23:02
I thought introducing total CMS with its new fancy um you know admin area would
23:07
be um good a good place to
23:14
start so um in here uh obviously a lot of this like this is just kind of like a
23:19
little to-do list for me okay um so this is the hom page there's not much here but eventually this will be some sort of
23:25
dashboard it'll probably tell you something about the data in your CMS instance and maybe links to docs or you
23:31
know stuff like that right so um yeah eventually this will be something that's nicer than just a bullet list okay but
23:39
that's not really important right now um let's go into the important stuff um and actually um yeah let's start with
23:46
schemas okay um since it's kind of like the lowest level so a schema as we talked about
23:53
before is um it defines what a particular object is okay so here we
24:01
have a Blog schema and this this contains all of the data for a
24:08
particular um blog post okay or blog object we have all of these fields as
24:15
you see there's little icons that kind of indicate what type of field it is you also notice that we have built-in schemas and custom schemas okay um the
24:23
built-in schemas are read only you cannot modify them um so none of none of the actual form fields are editable here
24:30
um so I mean but you can view and kind of see what what data is available um
24:35
and whatnot okay uh now here there's also what fields are
24:41
required okay and what fields are part of the index um the index is an important thing
24:49
um this is essentially uh again hopefully most of you are aware of total CS blog okay the current blog as you
24:56
know not not every uh blog post field is available in the blog list for example
25:01
extra content extra content 2 and content okay um those are not available
25:08
um so in here this this basically essentially defines all the fields that
25:13
are going to be available in the index within the quote unquote blog
25:19
list okay um fields that are not available
25:24
um here can be accessed on the actual individual blog post
25:31
page okay for example now um actually this uh kind of good thing I started
25:36
here this talks about a change for existing beta users um that I've made in
25:42
this uh version that I haven't Shi yet okay this will be in beta 7 that comes
25:48
hopefully tomorrow but um yeah it it might be a little bit more than tomorrow
25:53
okay um if if we look at this blog schema we'll notice that um it is a little bit
26:00
different than what the schema for total cms1 was um it doesn't have um extra
26:06
content it doesn't have extra content to it doesn't have labels it doesn't have genre it doesn't have archive okay
26:14
um and the reason for that okay is because um I added a lot of extra Fields
26:22
so that people can view blog even more okay and now that we're we're kind of going to get um a new beginning um I
26:29
wanted to remove fields that just it really didn't feel like they were needed for a Blog okay so I trimmed those down
26:38
however with that said um there is a hidden schema called blog Legacy that um
26:46
conforms to what total cms1 was okay um
26:51
and in a little bit if you remind me later I'll show you um how you can uh use that blog Legacy essentially in the
26:58
migration process when I migrate your data um you will be able to um it'll
27:04
automatically migrate cms1 data into a Blog Legacy schema okay um so I just
27:10
want to let you guys know that um and please remind me in a little bit later on when we maybe get into some of the
27:16
weeds um how you can actually um migrate uh use an existing maybe an
27:23
existing blog that you've created in the existing betas and how you can assign that to be a
27:28
a legacy blog schema instead of the normal default the new default blog schema
27:34
okay okay um so that was a little boond doggle there okay as you see here
27:41
there's a a lot of these built-in schemas that you're already familiar with some there are some new that there's a color um because total CS now
27:48
supports colors um but we have dates Depot emails feeds um just like we had
27:55
in total cms1 okay most of these are pretty simple they're just a an ID and
28:01
then a field right so a gallery schema just has an ID and a gallery a file has
28:07
an ID and a file right number has an ID and number so on and so forth okay um
28:13
feed obviously has a a few more right um oh a couple of new fields that I I did
28:19
add to blog and de feed are um created and updated these are going to be dates
28:25
date fields that are kind of automated so when whenever you create a new object
28:30
um an updated field can automatically be um add the date that it was currently or
28:36
created will be the uh date that that object was created and if you ever edit
28:41
that particular object the updated date will automatically get updated uh with that uh date okay so that's nice that's
28:49
in both feed and in blog okay so pretty nice
28:55
there now we have the ability to do custom schema as well and as you see in here I have the ability to edit things
29:01
right so if I wanted to add more uh required Fields I can go ahead and add in the required fields that we need okay
29:09
um here's a a new pretty fancy new tab or tag uh selector um I really like it I
29:16
think it's nice um it it this particular instance it shows you all of the existing properties so you can easily
29:22
just go ahead and click them to add things to either be required or indexed
29:30
okay um in this editor um you can go ahead you can see I can actually rename
29:35
a field if I want just by clicking on here and I can type something in and I can name it to be whatever I want okay
29:41
um if you click on this um it'll actually open up a light box and it shows you even more data okay so it
29:48
shows you the type of data it is you can provide something called a factory which we'll go into in a little bit um a
29:55
default value um some form information so um what is going to be the the the
30:00
label for this field the placeholder um the help text we'll see I'll show you some examples of that maybe uh I was
30:07
just testing this out so that I left all these blank that was bad of me and some more more advanced settings for this
30:14
okay and as you see you have all those detailed settings for every single property which is which is
30:20
nice um over here you can duplicate a property you can also delete properties
30:26
okay and if you didn't know they're all Dragon drop okay um and why why is
30:31
Dragon drop important um essentially uh because all of this is dynamic the forms
30:37
that are generated um they're based on the order of the fields in the schema so the order of your fields in the schema
30:44
um we'll see later on when we go into the forms uh they match the order of the fields on the form okay okay and if you
30:52
want to add a new field just go ahead and click the plus button and it'll add a blank field and you can go ahead and do all that stuff Okay add all that data
30:59
in there any questions so
31:07
far okay um so again that was schemas okay again they're a way of defining the
31:16
definition of what our objects are going to be he let's dive into the next view it's
31:23
collections so we've already talked about what collections are there are a a a collection of objects that conform to
31:31
a particular schema so for example here is my blog um and when I click on blog I
31:37
see all of my objects here okay what's nice is that it's all filterable so if I
31:42
do you know EG uh there we go I can filter and find things okay and it'll
31:48
filter based on every field that's displayed in this view um in this view it displays all the fields that are
31:55
available within the index okay so that's another thing that the index um
32:01
affects um and it searches all those fields so like if I search for um I saw
32:07
some posts that had dates of 1974 Oh I thought it was maybe it was
32:12
2024 okay um 2024 there we go we can get everything that has 2024 in it right uh
32:19
oh was 1972 I saw here let's go 197 uh 72 there you go right so you can
32:25
kind of see all that stuff so you can quickly filter um it happens on the Fly
32:31
really nice okay uh you can also sort okay so you can click on each field and
32:37
it'll sort by that particular column okay you also notice that there's pagination in here okay and the sort
32:46
happens across pages right so like if I sort by date okay I'm going to get the
32:52
the latest most recent date even if it was on page 10 okay so really nice there
33:00
as you see some data that isn't necessarily text like images I do show a preview of that image as well which is
33:08
nice okay um now there's multiple things that we can do in here uh obviously if I click on one of these it takes me to the
33:16
form to edit that particular object in this case a blog post okay and I can
33:22
edit all this stuff upload images do whatever I want click save okay
33:28
pretty uh run-of-the-mill um not rocket science
33:34
there uh you can use these breadcrumbs as navigation as well I can just click on uh click on this to go back to the
33:39
main blog what are some other things that we can do here um I can uh go ahead
33:45
and edit my collection oh well I guess before I do that let's talk about what a collection is um so I'm going to go and
33:52
you'll notice down here I can create a new collection um so let's talk about what a
33:57
collection is uh I'm going to go ahead and click new collection okay and uh
34:03
what I can do is I'm just going to give it let's call this new blog let's say I want to create um a second blog or let's
34:08
call this like um uh news let's call it news Okay I want to create a blog that's
34:14
news um on my site um and it it automatically updates the ID you can
34:19
actually manually type in the ID as well but I wanted to show you that it similarly to what we have already for uh
34:25
blog um the ID Fields can be automat atically um based on a field such as
34:30
name okay um now here you'll notice that I I have to select a schema that this
34:37
collection um abides by abides I like that word I have to remember to use that
34:43
in the future okay um and you notice uh actually we talked about blog Legacy I
34:49
can actually make this particular news blog abide by the blog Legacy schema
34:55
okay um or in this case I I'm going to choose blog okay um and then you can
35:00
give it a name and you can give it a URL you don't have to give it a URL at first um probably us at first we don't know
35:07
what the URL is going to be you can leave it blank we we'll review what that is um when we actually start looking at
35:13
the the website side of things may I interject for one second please so I one
35:19
thing that I that's super powerful about applying a schema to a collection is for
35:26
instance say I create a products schema and I want to have a collection
35:34
specifically for men's clothing but then I want to create a collection for women's clothing the beauty of having a
35:41
singular schema is you can apply that to multiple Collections and I think that an
35:46
important thing to note here that people grasp the power of a schema is it's a
35:52
set of rules for a collection but it can be for collections you can use it AC across multiple collections so if you
35:59
have four different collections utilizing one schema updating a singular schema can update those four collections
36:07
uh fields which is super super powerful so I just wanted to like help make that connection because exactly very good
36:14
thank you and that's important because um like I don't have any UI for this yet but um I want eventually we're gonna
36:21
have the ability to like move an object from one collection to another or copy it or clone it or whatever right and and
36:28
as long as those collections abide by the same schema you can just move them across different you know collections
36:34
right um so really cool let's say you had a Blog and you had I don't know an archive or something like that right you
36:39
can archive a blog post and move it to something so it's not gone forever you're just but we can uh you know
36:45
because those two collections abide by the same schema the same rules um then
36:50
we can do that right um so thank you Josh hey so I'm going to go ahead and click save and you notice when uh hey we
36:57
got a cool new save animation and once I save it you'll notice that I now have um
37:03
a bunch of new Fields here so I've created this collection we'll notice that I have uh Fields here for every
37:09
single property Okay now what's cool about this is I can actually um edit
37:15
some attributes about this and make it unique for this particular collection
37:21
okay um so let's say uh let's go to title okay um by default the label in
37:26
the form field is going to be title let's say I oops um I didn't want to call this title because it's a news so I
37:33
want to call this headline okay let's you know it's the title field but I I
37:38
want to call this headline okay so I'm gonna do that and let's just save that really
37:44
quick all right and uh just for fun we're going to go into news and I'm GNA I'm going to create a new
37:52
object what you'll notice here is that that um instead of title it says headline right here right pretty cool
38:01
now obviously I I have hover tool tips for help over so the title gets you know
38:06
replaced but yeah um you know and then I could I could update the help on here as well I can see you know write a nice
38:13
headline that bu blah blah blah blah blah right but what's cool is again you can customize this on a per collection
38:19
basis so the defaults for all this are defined in the schema okay but you can overwrite it um on the collection level
38:26
which is really nice okay let's go back to blog since this
38:31
has a bunch of objects now that we know uh what a collection is um and you know
38:37
what it looks like to create a new one uh we can edit this collection so if I wanted to edit the blog and in here
38:44
again you can go to all these fields um and edit some of the either the form things or add some additional settings
38:50
I'm not going to dive into these right now we'll have documentation uh for them later on uh I guess here okay I'll show
38:56
you some of them so from for like ID the ID field um is by default based on the
39:02
title field okay so um in here these advanced settings allow you to do things
39:07
like this so for an ID field there's a special setting called autogen and we
39:12
can Auto we can make the title be based off or we can make the ID be based off the title and this is the syntax and
39:20
there there there are there will be documentation on all of this and there's other things you could do like let's say I wanted it to be the title um Dash and
39:28
then a a a uu ID okay just some like unique identifier uh let's do that okay
39:35
so I'm going to click that I'm going to save it just kind of show
39:41
you okay and let's go back to blog we're going to create a new object okay first
39:46
off I don't have a title but it already added a little unique identifier there but if I do um you know this is a test
39:55
okay we'll see now that the ID of the ball of this object is the based on the
40:00
title plus some unique identifier right so super powerful okay um you can also
40:06
do things such as uh yeah just leave which makes this
40:11
actually kind of cool because if you're doing a blog post and you put in there like the ID of someone who's logged in
40:18
then you could have like the author in there or you could have the author field you know pretty much filling that in
40:23
which is ridiculous you know you can have it based on any field so you know you can actually just use let's say the author is a prop is a proper valid
40:30
property here you can do um you know now the ID is going to be based off the title Dash theauthor and then you can
40:37
even add a uu ID there now right so then if you wanted to that's cool that's really cool right so super powerful you
40:44
can add multiple Fields um in here um I think there's if you do now um it'll add
40:50
a timestamp okay so um pretty cool um it's super useful
40:57
right so that's an example um on how we can have settings for a particular OB
41:03
for a particular field and a lot of these settings are going to be specific to um like this particular autogen
41:09
setting is only on an ID field you can add it to other things but it's not going to do anything okay so particular
41:15
fields are going to have particular settings in the far future I I plan on having you know nice a nice UI here for
41:23
settings but for now um to get going we have this this text box that will be you
41:29
know it'll have syntactical requirements um but it should be pretty pretty simple
41:35
okay um next up is um let's go to labels
41:41
um so like for here in labels um this is a tag based field right and um in
41:49
here um I have a property options true and what that's going to do um let's go
41:55
into a let's go here okay if we go into uh well
42:02
tags has it okay um tags has that property options field and what it does is it it pulls in from all of the
42:09
existing uh objects all of the possible values that are have already been used
42:15
for tags and and populates the field okay so pretty cool
42:20
there um so okay I won't go into all the other uh you know things that you can do uh
42:27
but yeah there that's what the a lot of these settings are going to be for
42:33
okay um yeah I don't I there yeah I won't go
42:38
into anymore I I I can spend a lot of time on some other various options that are kind of cool um I do want to show
42:46
here I'll show you an option this probably doesn't make sense for title but I I'm just going to put in in here
42:53
um what show you what this can be used for okay um I'm actually going to type in this exact thing that's in here so
42:59
we're going to do um option one Comma
43:08
just option two option there's more advanced syntax
43:14
that we can do here but this is the simplest one okay I'm going to close that and we're going to save and I added
43:21
that to title okay um so we're going to go here um and then hopefully this works
43:28
okay uh oh it doesn't work all well uh
43:33
oh did I oh well it what it will do oh here let's look at author because that's what this does uh one second actually um
43:42
so what that should do um it it it provides you a a list while this is a
43:49
text box okay um and I can type in whatever I want in here um the ability to to
43:56
provide um a list of pre pre selected options like here let's do like Hardy right so
44:03
if I start typing Hardy it kind of you know delates the list and I go oh that
44:08
was the one I wanted okay so that's what that options thing does now if this
44:14
field were set to be a select box um it would be an actual select box and I couldn't type in whatever I wanted I I
44:20
could just select one from the list okay so that's essentially what that options field is for okay
44:27
um it serves two purposes if the field is a text box we'll get this um and this
44:33
UI is browser specific um it is a feature built into the browser so um
44:38
this is how it looks like in this browser but it works differently or is it works the same but displays slightly
44:44
differently based on the browser the user is in okay um okay so uh I won't go into the
44:53
weeds any further on that um um so the last thing that I haven't
45:01
talked about in this collection is actually something I implemented last night um and it will be a part of um
45:07
beta 7 okay is if we go over here and click um there's a few things here now uh I haven't implemented import but
45:14
import will definitely be where we can import let's say a CSV file or various other formats that I plan on support
45:21
supporting for import okay so you can import data into this collection
45:27
um but what I did Implement last night was something called the factory now um I talked about um the
45:34
factory a little bit when we were looking at schemas and what is that okay so um I
45:41
think the factory is going to be a super powerful way to generate um artificial
45:48
data within our um websites okay this is going to be amazing for just quickly
45:55
getting up and running and having data okay um fun tidbit all the data that we
46:01
see here it was all generated by the factory okay now how does it know what
46:08
type of data to add okay and uh to do that we're going
46:14
to go back into the schema okay and what we'll notice is uh if we
46:22
go into each of these fields
46:27
um there is a factory field okay and that factory is the setting of um what
46:36
type of data will be added to that field when the factory runs okay um and there is uh if we go
46:43
let's go back to the uh Factory page right if we go to the factory docs okay
46:50
there's a link here for the factory docs there's all kinds of stuff that we can add into our schema word word sentences
46:56
par paragraphs text there's images okay so we can generate images um we can
47:02
generate actual uh in that blog I was doing like an image shapes uh but you can actually bring in actual images of
47:09
let's say people or stuff like that I have an example of that we'll see that in a little bit um you can import tags
47:16
um names so a first name you can even do something like first name male first name female okay so you can do all kinds
47:22
of stuff various address and phone number information uh some company stuff um so
47:29
yeah is there's a lot of really useful stuff in here it's it is a lot of it is kind of like lur some type of data okay
47:36
but um it's really cool and there's actually more than this um I'm this is just a draft of the of the docs there's
47:43
all kinds of more stuff that we can do here okay so let's go back to the
47:48
factory so um in the factory um I can say how many objects that I want to create and all I have to do is click on
47:55
this create objects button and I've now created eight new objects in my
48:02
blog okay really cool and it was created by the factory settings set inside the
48:07
schema for that particular collection now eventually uh I do I think it would
48:13
be nice to be able to Define custom Factory rules right here um eventually I
48:19
I do would like to have that but for right now I just wanted the ability to quickly create objects for our uh
48:26
collection and if we go back to our blog um if you notice now there were 31 before now
48:32
there's 39 okay um so yeah really really cool and it created these new Unique Images
48:39
um as well as you know all the data for the blog posts pretty cool okay so Factory again is a super
48:47
useful way it could be uh even for simple things like colors um pretty much
48:52
all the color most of the colors that you see here were all created by by the
48:58
factory okay just randomly created objects with a
49:03
color okay pretty cool um let's let's go
49:09
through some of just kind of uh navigate through some of these here's a custom collection I created that just had an ID
49:14
an email and a color Okay um that was a something I created that didn't do
49:20
anything uh so we here we have dates emails um here's a feed uh here
49:27
uh oh if we look in this just to kind of see here's another type of image that you can create um it's just you know an
49:33
image with a word um some sort of lur some word in it I'm just kind of show you
49:39
that um I wanted to show you galleries um don't let the Joe don't let the
49:45
voting machine people buy these
49:51
nice yeah the the factory right just generate votes on the Fly
49:57
um the gallery um what it does is it it will show you the thumbnail of the first
50:02
image in the gallery and it'll show you a a count of how many images are in the gallery right so this particular one
50:08
this gallery has 21 images if I click on it there we see there's 21 images inside this
50:14
Gallery okay pretty cool any questions so
50:23
far okay we'll dive on um I guess I'll I'll finish um the rest of this admin
50:29
area here's just some docks all these docks are very rough um they have you
50:35
know information in there but they're not they're not up to Snuff yet okay so
50:41
there again there is a lot of stuff in here um you can prise through and maybe get some hints and tips especially like
50:46
the the factory stuff okay um but yeah um there there's a lot of stuff in here
50:52
some of it works oops that doesn't even work at all oh shoot I broke that I'll have to make sure I fix that darn it um
51:00
okay cool good thing I clicked on that okay um settings uh or utilities
51:08
this will be uh a place none of these actually work yet but these are just ideas for utilities um so clearing
51:14
caches batching generation of images um a server Checker um and then a log
51:21
analyzer and then this will be a place for uh settings okay and again that doesn't have anything yet
51:27
either okay all right so on all intense purposes that is a complete overview of
51:33
the new admin dashboard again a complete Game Cher um for yeah building your site
51:41
because you no longer have to spend time to generate an admin area Um this can get you up and running super
51:48
quick what I'm really excited about for this is um a lot of the times when we're
51:54
building sites like we do like for me in our production um we build sites uh we
52:00
design them and then we go to build them and we don't have content to fill in
52:05
that area so what's really nice about this is this gives us the ability to one get content with Factory build out a
52:12
whole front end site without even worrying about the back end um and then you know you could you could go to
52:19
launch on a site real quickly by focusing on the front end and then build
52:24
the custom back end for your customer as needed because with with this Auto admin
52:29
we have all the control we need on that back end um instantly and then for the
52:35
custom admin which I I still like building custom admins for my customers giving them control to change what they
52:41
need to but with this it will allow me to have the tools all the switches on my
52:47
end automatically and then I could build something simple and custom for the customer after you know and I think this
52:54
is massive for productivity yep couple questions that I saw in the
52:59
chat so uh Scott you asked how does this relate to permalink I assume you're talking about the ID field okay um
53:08
basically it's the same okay so instead of permalink I called it ID okay so yeah
53:13
um the ID is the permal link now uh or the permal link is the ID field I should
53:19
say um so yeah same thing um I just felt ID was a more Universal term um for uh
53:27
since I was trying to generalize a lot of this vocabulary okay Jo Jo productivity wise M how hard would would
53:36
or easy would it be to once you've build out your your admin
53:44
area how hard would it be to clone that and then remove stuff that you don't want the client screwing
53:51
with uh oh you mean uh like cloning this the dashboard yeah
53:57
um so all of that is I mean that isn't all built it's all like dynamically
54:02
built on the fly so there is no cloning it and removing stuff um now I I do plan
54:10
on I don't have any there's zero authentication right now okay um I do plan on adding um traditional you you
54:18
know username and password authentication and then on top of that I will have some sort of permissioning
54:24
system so you can you can give your client if you wanted to give them access to this you can give them access but
54:30
then turn off certain things right um I
54:35
I'm a little scared on what can of worms that's going to be because some people are going to want how fine grain do I go
54:40
um so yeah there will be probably limitations on that I don't want to you know be able to control every UI
54:46
component but um yeah I do want to give the ability to turn on and off certain
54:51
functionality like maybe they're not allowed to delete things or you know they're not allowed to go into the schema at all right um you know stuff
54:58
like that I think is super easy um to to to do um so yeah we're going to start
55:04
with something like that so you can have multiple users and at least like two levels of permission you know a super
55:10
user that gets everything and then a restricted access that gets not everything okay um whatever and they'll
55:17
be that'll be configurable um to you as the super admin um does that kind of answer your
55:24
question yeah kind of I'm just trying to side I mean this Auto autogenerated
55:30
dashboard thing is great for us yes but it it'd be a nightmare to give to a client I I can understand that yeah I
55:38
can understand um so yeah um that's why I I felt it was important to um still
55:44
allow us to create the custom admin area to give them just the ferin controls
55:50
that they that we want them to have right um and I I I do want to have build
55:55
some tools to make it that easier as well um but yeah um yeah that's kind of
56:02
what I was getting at I mean it's is there can we take these chunks of of this thing and put them
56:09
into um something that's more client usamp you know I mean my clients aren't
56:15
going to my clients say I have current clients right now who have 10 blogs right
56:22
MH if I give them something that says Okay add a collection they're gonna be go what the you know I
56:29
just want to add a blog post exactly yeah 100% yep that's why Scott I said
56:34
like it's still going to make sense to build something simple for those customers and it's not going to take a
56:41
long time to build out a a Blog management you know dashboard for those
56:46
customers right because like also there's a couple things you need to think about too is that based because
56:53
this is autogenerated you know when you go to the text collection for all the text fields that you have on your site
57:00
they're going to be in order of ID name so if you have you know a whole bunch of
57:06
text fields on the homepage you kind of want to name them home Dash something so
57:11
that you can see where you're editing because there's not going in the admin side you're not going to the homepage to
57:18
edit a text field you've got a list of text Fields so really it's still in your best interest to make some sort of small
57:26
admin for your customer but this now allows us to make a very specific admin
57:32
for that customer and still give us the power to edit everything instantly yeah
57:38
um so all of the little individual like components within the dashboard let's say like um I haven't created a stack
57:44
for it yet but that table right super nice table I really love it um that table will just be a stack you can drag
57:51
on and then you can say point to that to this collection and boom you just get that right
57:56
um so all of the individual components of um the dashboard will be available to
58:03
you um on your custom admin area so that you can then you know build it out and
58:09
hopefully build it relatively easy so yeah um and as we build it I'm
58:16
sure we can come up with better ideas you know I I'm always up for improving and and adding new features and stuff so
58:22
um yeah I'm good with that um I didn't one one other thing in the chat Paul uh this is recorded um again I'm using a
58:30
new service not sure what the recording output is going to be like but uh yeah I will make sure it's available okay okay
58:38
Jo one question yes uh is it possible to duplicate the last entry if I create a
58:45
block and uh I like to maybe only change one field then it would be nice to have
58:52
a button say duplicate this last um thing and and then only change one
59:01
one position yes I do plan on having a duplicate or a clone button um so you
59:07
can you can quickly duplicate a a object or a blog post or whatever it is um and
59:13
yeah then you at that point it'll duplicate all the data and then you can just modify whatever you need and yeah
59:19
then we're good to go um so yes I do I don't have that as a feature yet but it is on the road map okay
59:27
um I even built all all the apis for it are built I just haven't built any of the UI for it so um yeah we should be
59:35
good um oh one other thing here let me share my screen again um that I uh as
59:41
Josh and Scott were talking um I I forgot to go over I did um oops not schemas
59:50
collections I if you noticed there was a uh a set of field when we edited a
59:57
collection let's go to one that doesn't have it let's go to like products or something like that
1:00:03
okay there's something down here called custom uh object form overrides okay um
1:00:12
and this this is actually super useful super powerful okay and I I built this
1:00:19
primarily for the text collection okay um because there are there many
1:00:26
different ways that we might want to edit text now by default when I when I edit
1:00:32
uh text let's go to like about me okay this is going to be the default right uh
1:00:38
we just get a a oh this is style text okay but um we just have a text box but
1:00:45
what if I want other in in total CS there's there were all kinds of ways of editing text we could have had a select
1:00:51
box we could had a a single line uh you know text input we had a text area we
1:00:57
had style text right there's all kinds of ways of adding text okay um and here
1:01:04
if we go new object this is actually the default view it's just a simple text area Okay um but what if I wanted again
1:01:12
I wanted to customize when my client went in here and he went into my select
1:01:17
instead of a text area I only want him to be able to select one of these options right or you know if we go back
1:01:24
and I go into um here's a password oh well that that one apparently I did wrong uh let's go into well about me as
1:01:33
we saw had the uh style text right and if I go into my time this has a Time
1:01:40
picker right so as you see I can customize these forms on a very specific
1:01:47
level okay and that is uh where we go to edit collection okay and in here as you
1:01:55
see if we go here I can select what my default field is going to be the default as we saw is
1:02:00
text area I can change that if I want the default to be style text or just a simple text input right there's
1:02:08
different ways of you know whatever you want okay you can supply all your your
1:02:13
default labels and placeholders and text values okay but if we go down here we'll
1:02:19
notice that I have something called these object form overrides and what these are is they are
1:02:27
specific overrides for a very for a specific object so for the object my
1:02:34
select I want the text field to be a select box and I want the form label
1:02:40
placeholder and help to be these things so this allows us to do very
1:02:45
specific overrides for very specific objects very granular but it it it makes
1:02:53
it nice so that when our customer logs in we give them the exact interface that they need to input the data that they
1:03:00
need for that particular thing okay so pretty cool any questions
1:03:09
on that yes Joe does that really uh create
1:03:14
issues with the with the factory or is that going to talk to it properly um
1:03:20
well so for this is a very I'm not sure Factory really makes sense something in
1:03:25
like a text collection because textt is like every bit of text is going to be something different right so um yeah the
1:03:33
factory is all about bulk creating items uh or or objects that
1:03:39
conform to a particular Rule and something like text I don't know uh you
1:03:44
could do it right and but uh how would you you want all your bits of text to be
1:03:50
something different right and you probably want them to be a very specific ID as well um so
1:03:56
yeah I mean that doesn't really work the the factory only works with whatever your default setup
1:04:04
is okay now you eventually when I when I create these specific ones you could be
1:04:09
like okay I want to create three that have let's say uh you put in a mail name
1:04:15
or you know whatever that thing is and you can say create and then you can do okay now I want to create 10 of them that is uh three paragraphs and you can
1:04:22
say create right So eventually the factory will be more Flex where maybe it's useful in a text collection um but
1:04:29
yeah hopefully that answers your question sorry Scott what were we going to say um back to the style text area
1:04:38
M do do we have control of what tools are in there uh we will um right now I
1:04:46
haven't I haven't built right now it's just hardcoded um eventually um I will have probably uh
1:04:54
you can set it at a default level but then also if we go into edit collection and go into style text um this you can
1:05:02
you you'll will have the ability to generate uh settings for a very specific
1:05:07
whatever you want right in here okay so there'll be settings for
1:05:14
this where you can have you know style text and then you can like list out all the various toolbar items that you want
1:05:20
so you'll be able to do that here um and then on the back level we'll have settings for all that
1:05:26
yeah so they can add a link they can add it exactly yep yep yeah so uh like for
1:05:31
example I haven't I haven't even done the apis for the image and file upload in style text they don't work yet um so
1:05:39
yeah right now the styl text is it it's just the simple whatever it is I think it's bold italic and something link I
1:05:45
don't remember what it was but yeah um I just haven't had time to work on that part
1:05:54
yet cool okay um let's start jumping into
1:06:20
Stacks right so this is the demo file um that uh comes with total CS3 um I I try
1:06:28
to remember to put it in the whenever I ship a new beta a new version of this file that you know conforms to whatever
1:06:35
is new in that particular beta okay um I don't think anything's changed in this
1:06:40
since I last released it okay um I guess since we've we've been
1:06:47
talking so much about the admin stuff um let's let's just finish that topic and
1:06:53
go over the admin area uh for this particular project okay um I'm going to bring up this actual project um it's
1:07:01
published here okay um so here um is you know this
1:07:07
project file and if I go to the admin page um I have uh you know a custom
1:07:14
admin area um this edits a very particular um you know text object this
1:07:21
you know edits another text object this is a very this is a specific image right
1:07:27
so again um this is very much like what we're used to now
1:07:34
okay um if I have a button here for admin dashboard if you click on that this is now the admin dashboard for this
1:07:40
particular website right so I can go in here and I can see all of these uh you
1:07:46
know collections um you know if I go into Bill uh going to blog going into demo collection you know these are all
1:07:53
um here's here's an example of the this image was created by the factory um and it's an actual image right so not all
1:08:00
images that are created by the factory are like some abstract thing you can't have it actually generate uh useful
1:08:07
actual pH photographs okay um and you you can have them color or black and white you can
1:08:14
actually specify if you want all black and white photos and stuff like that um pretty pretty cool okay so again this is
1:08:21
the actual uh admin area and like for example um if I were to go here let's
1:08:38
um so like for example uh this particular text edit right here I
1:08:43
thought it would be fun to go in and if we go into the text collection okay well
1:08:48
there it is it's just called header right so again I can edit it here in the dashboard or I've created this custom
1:08:56
admin page where I have the same pretty much the same interface
1:09:03
okay um galleries uh they've been completely redone something I I haven't gone over yet um is the immense work
1:09:12
that was done for images okay um you guys can uh big give a huge thanks for
1:09:19
Wolf for being the inspiration behind a lot of the features that I've added um
1:09:25
to the image stuff here okay um and what let's go over it now okay so um as you
1:09:33
see this uh has a very similar interface to what we already have in total cms1 um
1:09:39
but there's a lot of extra stuff here um if we go in here and click on edit image
1:09:44
info okay what we'll see here is that we now have a lot of information that we
1:09:50
could edit about an image in total cms1 you basically you you can store an ALT tag that was it
1:09:57
okay now we can we can mark an image as featured um we can set the alt tag we can we can define a link for an image we
1:10:05
can we can give tags to an image um we can define a focal point I'm going to
1:10:10
come back to that um all the exif information about an image this particular one didn't have
1:10:16
any but if there were exif information it would have been put extracted from the image when he uploaded and displayed
1:10:22
here and all of that data is editable so you can if you wanted to edit that information uh within the CMS you can
1:10:30
okay um now it while I do have to say that this information is edited in in
1:10:35
the CMS if you change the information here it doesn't update the information on the actual image
1:10:42
okay um GPS so a lot of exf information uh another thing that does is it analyzes the image and puts out a color
1:10:50
palette that it found based on the image okay and what's cool kind of cool is you can should drag and drop these around
1:10:57
and um why is this useful well let's say um in in your
1:11:02
design you um you upload an image and you want to pull the first color from
1:11:09
the color palette of an image and use it as a background image or I'm sorry a background color for something okay so
1:11:16
you can do that and you can actually click on these and you can modify these colors or you can you can you know move
1:11:21
them around so if I wanted to you know use the first color of an image but I wanted to make sure you know the CMS
1:11:28
said it you know I want to use this color but the CMS put this last I can just drag that up to the front and now this color from that image is used um
1:11:35
where I've wherever I've configured it uh on my page okay and then there's just
1:11:41
some readon metadata about you know the size the width and height of the image the name of the file upload date so on
1:11:47
and so forth okay um now I skipped over focal
1:11:52
point so this is a a a really amazing Fe teacher
1:11:57
okay um total CMS which we'll see in a little
1:12:02
bit can dynamically crop and you know crop images um and one feature that was
1:12:09
really important to uh photographer such as wolf is you know when you're taking
1:12:15
um photographs sometimes um you know when you're trying to batch crop or
1:12:21
intelligently crop images um it's hard because let's say uh let's say in total
1:12:27
cms1 uh it did do intelligent cropping it can create a square thumbnail but you
1:12:32
always had to crop every image based off the same point whether what it was the the right of the image or the top of the
1:12:39
image or the the default was the middle of the image now this particular image that
1:12:44
we're looking here the middle probably makes perfect sense because you know the the focal point of this image is right
1:12:51
here it's this van okay but I can change that now I can use these sliders to
1:12:57
change the IM to change that focal point I can also just drag and drop this and as you see those sliders are dynamically
1:13:03
changing and I can Define exactly where I want my focal point of the image to be
1:13:08
that way when I uh batch create um you know thumbnails Square thumbnails I can
1:13:15
crop it based on the focal point that I've defined in the CMS and I will get
1:13:20
the exact cropped thumbnail that I need for every single image
1:13:27
that's really really powerful and I'm really happy with this
1:13:32
UI I wanted to nail this UI and I think I've done a great job with that in my
1:13:38
personal opinion okay so that is again all the information about an
1:13:45
image now there's even more um so in here we can click on image URL oh sorry
1:13:51
you got a question yeah is that is this interface avail able from the auto admin when you're editing images there yes
1:13:59
yeah all this is is in the auto if we go to here if I go to Gallery I click on
1:14:04
this I click on that okay perfect awesome yeah yeah it's all exactly the same perfect sorry I didn't see that
1:14:11
part yep yeah I skipped over I I wanted to do that here okay
1:14:19
um okay so uh image Builder okay so um
1:14:24
as you're probably aware total cms1 creates uh two thumbnails when you
1:14:31
upload an image and that's an important statement there it creates thumbnails when you
1:14:37
upload the image that is the only time it does it let's say you've uploaded a 100
1:14:44
images to a gallery and um you know you've defined total CMS to create
1:14:49
thumbnails at 200 pixels now let's say a year or 18 months
1:14:55
later um you're like I want all these thumbnails to be 400 pixels well guess
1:15:01
what you are out of Lux sir um because you now have if you want them to be 400
1:15:07
pixels you'd have to re-upload every single image um all over
1:15:13
again okay and uh yeah that's not really viable okay so um in total CMS
1:15:21
3 um you upload an image it stores the original image
1:15:28
and what we do is you can create thumbnails on the fly whenever you want
1:15:35
and this allows you to customize that interface or or to see the options that
1:15:40
are available to us okay so for example let's say uh this
1:15:46
particular image I wanted to create a um 300 pixel by 300 pixel um and let's crop
1:15:54
it from the full Point okay and uh yeah preview there we
1:16:00
go now remember I changed the focal point of this image uh a few minutes ago
1:16:05
to be in up up in this corner and that's exactly what it did right I didn't plan
1:16:11
that that was a a happy accident okay but had I had I gone in let's go ahead
1:16:17
and uh I'm going to change this focal point to be uh right here in the middle
1:16:23
okay and we're going to go here again and uh let's preview that image again voila so now
1:16:31
um now that F crop focal point was based off the focal point that I saved in the
1:16:38
CMS pretty cool now something um a behavior that I've done and I've did
1:16:44
this on purpose if you noticed um when you close when you edit this information and close that light
1:16:50
box that actually that information gets autosaved to the CMS
1:16:56
okay um I did that because um there's a lot of data in here and a lot of times I
1:17:02
think people will edit the information close and then they'll forget to maybe click on a save button okay um and I
1:17:10
didn't want all of your changes to be lost okay um so um the data in this uh
1:17:16
light box does get autosaved when you click out okay um so any go back to this Builder
1:17:25
yes um better you have a warning
1:17:31
information all your information SC okay uh yeah I I I do have some notes
1:17:38
for myself to rethink that um but that is the current behavior um I I am open
1:17:44
to rethinking that behavior though okay um I forget I look my notes there were there were other Behavior there were
1:17:50
other reasons why I did that I can't remember off top of my head but um yeah open to rethinking that maybe
1:17:59
add a cancel button uh the the problem with the cancel button is um it's a can of worms
1:18:07
that if you click cancel you expect all of the all the data that you entered in here to revert to what it used to be and
1:18:13
so uh that's a cancel button sounds easy but then I'd have to build an entire thing where it remembers everything that
1:18:20
it used to have um store all of what it used to be so that when you canceled I
1:18:25
reverted it back to what it was right so um cancel buttons sound simple um and I
1:18:31
do like the idea um but the implementation of it uh can be complex
1:18:38
okay um yeah okay um so right get getting back to this okay um yeah pretty
1:18:45
cool there's all kinds of stuff we can do we we can adjust the quality pixel density uh the format so if you wanted a
1:18:53
um PNG version of this image or a progressive jpeg or a webp you can
1:18:58
easily get um a webp version of that image that is now a webp version of the
1:19:04
image you also notice here um it's 33 kilobytes 300 and the size pretty cool
1:19:11
okay um there's also a little a little documentation on what all these fit crop options are okay so uh when you click on
1:19:19
this you get a bunch of options okay um and there's some and the reason you can actually click into here
1:19:25
is because you can do something like uh crop XY where you type in the actual
1:19:30
position that you want to crop it by okay so for example if I did um crop Das
1:19:38
20-20 okay um let's see what that does there it does 20% by 20% so it it you
1:19:45
know goes up to the top Corner um so you can type in your own thing um and the documentation for all that is right in
1:19:52
there we can do a bunch of effects so you can sharpen contrast uh adjust the brightness pixelate something blur
1:19:59
something um add a black and white filter or a CPA filter um you can add backgrounds and
1:20:06
borders and probably the most important feature here is the ability to add
1:20:11
watermarks okay so um in here you can choose um a watermark there is a special
1:20:18
uh uh Gallery if you call it Watermark um any uh image that you upload that
1:20:24
will be supported by uh the image UI here um and display that image as a
1:20:29
watermark okay so if I go ahead and let's say this one I want my waterm mark to be um let's say 150 oops not 450 150
1:20:38
by 150 um and let's preview there we go it's that that is
1:20:44
now a watermark on the image um it is it's not overlaid it's embedded into the
1:20:52
image okay super super cool here let's go ahead and check out this one and
1:20:57
we'll fit that one okay so there is another type of water mark okay you can also adjust the positioning here right
1:21:03
so you can do like if I want it in the center okay maybe make that a little bit uh uh 200 by 2
1:21:12
100 and preview voila right so there is a water Mark it's right there in the
1:21:18
middle you can also do uh O Alpha so if I want it to be like 50%
1:21:25
there we go super cool very powerful right now um this
1:21:34
little copy macro button will be super useful because if I want to generate this exact image or a version of this
1:21:41
image this macro is exactly what I need so um if I'm using a warehouse
1:21:48
image um and I want to put in this exact URL inside of a t stack settings guess
1:21:53
what I copy this I copy this macro paste it into my warehouse URL setting or
1:21:58
whatever and you're done pretty cool okay and if you want to learn this
1:22:05
syntax it it is there is an organization to it I've done a lot of different settings in here so it's quite long
1:22:11
right but all you have to do here is copy that macro paste it wherever you want this particular image to be and
1:22:18
you're done super powerful there's also a download button so you can actually down
1:22:24
download that image as well so there we go there is and you see it it downloaded it it is a webp there is that particular
1:22:32
image that I just got dynamically generated by total CS you know how badass that is is like
1:22:39
if you're if I've uploaded like all these original images like the full quality images and I'm like oh man I'm
1:22:45
working on like a social media post or something I could literally just go in there create the photo I want download
1:22:51
it and it's it's like a it's a whole converter for you it's ulous yeah
1:22:56
totally um something that I um okay so
1:23:02
while this is powerful um it is also dangerous right
1:23:07
and why do I say it's dangerous um because let's say you upload let's let's take an extreme use case you've uploaded
1:23:14
a thousand uh 2 megabyte images into total cms3 okay and um you go on your web page
1:23:22
and you're like okay I need uh to create uh 200 pixel uh thumbnails
1:23:29
for all 1s of these images do it now right your web server is going to puke
1:23:36
okay um because you you've now your web server probably has like 50 megabytes of
1:23:42
memory or something like that right and you've just requested it to uh generate you know a thousand thumbnails
1:23:51
on the fly right now okay so how am I going to solve that okay because it is a
1:23:57
problem okay um I haven't I haven't built it yet but if you noticed in one
1:24:03
of these in the in the admin dashboard uh there was a utility called image Batcher okay and uh what this will be is
1:24:11
you'll be able to it'll have a similar interface to this okay and you'll be
1:24:17
able to let's say um generate uh this version of this image for all images in
1:24:23
this Gallery okay so you can kind of you know pre-build those images out and me
1:24:29
what it will do is it'll it'll create one image at a time so that your server is not just completely puking okay um so
1:24:36
yeah it'll be an image Batcher um again I haven't built it yet but I think it's going to solve that particular problem
1:24:42
or it's going to make that particular problem much easier to handle okay any
1:24:48
probably want to do this yes uh it's still possible to limit the upload size
1:24:53
for for use this yes it is uh yep that it is possible um I'll show that in the
1:24:59
stacks um I don't have that uh that will probably be something I add to you know
1:25:05
remember those special settings things inside the when you create it it'll I'll probably add it in there as well if you want to use the auto admin area but
1:25:12
there are all already settings here um in the stacks which we'll look at okay
1:25:17
okay okay cool um so the admin area um went off on a little boond doggle as you
1:25:23
see here's that gallery that has my watermarks um here is the you know the normal gallery and an image okay
1:25:31
um so as we see here we have the ability to create again your own custom admin
1:25:37
area that does exactly what you want um I won't dive into every single one of these here's an example of a feed okay
1:25:44
and you click on it and it opens the the form inside of a light box okay uh if we
1:25:49
go into blog um this is kind of a traditional blog layout uh where we have
1:25:54
list of all of our posts I can click on it and I can edit that blog post
1:26:00
right here is the admin for a custom collection here's all of my custom objects I can click on it and here's the
1:26:07
form to edit that particular custom object right um this is uh the ability
1:26:13
if you wanted someone let's say to to manage collections uh again this is a
1:26:18
view where I can see all of my collections I can click on it and I can edit the actual collection again all
1:26:24
this is in my own custom admin
1:26:30
area and same thing for schema I can view I I can list out all my schemas uh
1:26:36
and then I can click on it and there's my schema form so you you really can um
1:26:41
you know give someone just the access they particularly need with something
1:26:46
like um yeah the custom admin area and then this link to dashboard just takes
1:26:52
you oh that's another I should note um as you see this is the admin dashboard but it is embedded within my site okay
1:26:59
so I you know that is an option okay let's look at the stacks
1:27:07
really quick okay so let's look at the stacks for the admin area um admin link this just links out
1:27:14
to the admin dashboard um again here's just a text form let's look at this let's look let's look at the
1:27:19
organization of the stacks actually since we're just kind of getting into the stacks uh thing um so I I think I
1:27:27
like the how I'm organizing the stacks currently um here we have just kind of a generic total CMS Stacks um so you're
1:27:34
familiar with uh CMS core that's going to be something that goes on every page now not just content Pages it will go on
1:27:40
every page okay even admin Pages um process macros um x-ray data we'll go
1:27:47
with that in a little bit when we start looking at content stuff um so here is some admin specific Stacks so here we
1:27:53
have the admin core okay which again is going to be something that you add to the admin pages
1:28:00
okay the admin embed this is going to be um where we want to embed the admin
1:28:06
dashboard so here is that page where I embedded that admin dashboard I just add that you put in a height that you want
1:28:12
it to be and boom it's there okay the admin link is is the link um I'm not
1:28:19
going to go through these one by one um we'll go through let's see uh total forms this is where you're going
1:28:25
to add stuff like here's a text form here's a style text form okay here's an image form um uh wolf was asking a
1:28:34
little bit ago about validation rules um so you can you can validate the uh similarly to Total cs1 we can uh limit
1:28:41
by size height width mode so is it a landscape a portrait or a square image
1:28:48
um aspect ratios um count so you can also limit the count so let's say you only wanted to allow someone to upload
1:28:54
10 images to a particular Gallery you can limit that count as well um you can
1:29:01
limit by type uh this kind of an advanced feature where you can uh limit Something by A MIM type okay doesn't
1:29:08
really make sense for um images probably I kind of share these settings with uh like I I plan on sharing it with
1:29:14
something like um Depot so you can actually like you know limit by a zip file and stuff like that and you can
1:29:21
also limit it by the name so um you know you want to make sure that someone you
1:29:26
know only uploads something named this maybe okay um definitely an edge case but an extra spot for a button so we
1:29:33
thought of an extra use case for validation rules right there we go um so yeah lots
1:29:39
of validation rules you can use as many as them you can use one of them or all of them it's up to
1:29:46
you okay I'm so excited about the count one because we've been wanting an an
1:29:51
image um H so that's the the basic admin page
1:29:59
uh you you can go through uh this project file a lot of this is going to be similar to what we're going to look at the content side so here's the
1:30:06
example of the blog admin I'm using something called uh a loop blog stack um
1:30:11
and a special stack called admin list that generates that kind of that scrolling um container that each uh you
1:30:18
know um every other row is like a different color right um so that's admin
1:30:24
list stack and then it just this blog just generates objects for me okay um
1:30:30
and then we even have the ability to create factories right here inside here so we you have the ability to generate
1:30:36
five blog posts straight with this Factory stack okay and actually in here I give the ability to Define custom
1:30:42
rules okay so you can actually do that um here um I plan on having this
1:30:48
particular functionality um when I add uh you know to the admin dashboard as well okay but you already have that in
1:30:54
the custom admin area which is kind of
1:31:00
cool okay uh any questions on the admin Stacks I again I'm not going to dive
1:31:06
into every single implementation here um if you guys have the project file I think most of you can kind of understand
1:31:12
what's going on here I try to keep it pretty darn simple
1:31:24
okay with that let's uh migrate into the content of the website Okay so we've
1:31:31
spent uh man hour and a half already ju purely talking about the admin side and
1:31:36
I haven't talked about hardly at all the content side of things um and I think if you've used
1:31:43
twig this is going to be really easy okay I I think we've knocked it out of
1:31:49
the park I think it's going to be easy for even new users um especially if you
1:31:54
use twig this is going to be completely seamless for you so here is the content page I have a
1:32:03
header with that bit of text um a paragraph of text which is a different text area um here's my image with the
1:32:09
watermark and then here's my gallery um with thumbnails and when I click on it I
1:32:14
get a full scale you know gallery that I can then navigate through and do all kinds of
1:32:20
stuff with thumbnails down at the bottom right which is kind of cool if you notice the gallery it doesn't actually
1:32:26
load the images until you click them um so it's very performant um I like it a
1:32:33
lot okay let's look at this particular
1:32:40
page um so there is let's look at the content
1:32:47
Stacks so we have a bunch of content Stacks here okay um and we have a text
1:32:53
stack okay and uh here we have an instance of that text stack here and here I have I
1:33:01
pretty much give it an object ID this is the ID of my text and as we saw in the back end just like total teams1 you just
1:33:08
need to match the IDS okay so we have header on the admin
1:33:13
side I add header as well okay and magically uh here I we can Define I want
1:33:20
this to be an H3 and we're done what's kind of cool about these Stacks is by default I have preview macro turned on
1:33:27
and what this does is it shows you if you wanted to add this to a your own thirdparty stack and not use the total
1:33:34
Semus content Stacks this is the macro you would use to inject that text so
1:33:40
let's do that really quick question for you Joe because that's actually one of the comments Scott just put in the chat
1:33:46
a little bit ago is there going to be a way to copy that macro from the auto admin area for like Tex Stacks maybe
1:33:53
there you could have a an ability to copy that macro from the auto admin
1:33:59
dashboard uh so you yeah if you're going to like
1:34:05
the text right not the schema go into the actual sorry Collections and you go
1:34:10
into the text and you're looking at that text maybe there's a if you click on that maybe there's a copy macro button
1:34:16
or maybe in that in that column there like table that you'll have a copy macro
1:34:22
button H I'll think about that
1:34:29
um I'll think about
1:34:35
it it's kind of a good idea uh it's it's it's also a really hard idea um because
1:34:44
everything is so generic back here um that let's say for like if this is a
1:34:49
blog like how do how do I do a macro for for that no no I no it'd be very like
1:34:55
this would be very like text specific oh okay like you already have it for image so maybe you just have one for the text
1:35:02
objects I mean for blog obviously that doesn't make sense but thought about creating here like a macro Builder um
1:35:09
yeah that'd be cool um uh that that thought has crossed my mind uh like I do
1:35:14
actually have a uh I I have a macro Builder stack here
1:35:20
um that helps you build a macro um and I was thinking of taking this and doing
1:35:25
that in the admin area um I think that even having this macro Builder sack
1:35:31
actually I didn't realize there was that that's actually pretty cool okay uh yeah uh here let let me let me I'll look at
1:35:37
the macro builder in a second we'll go over that but let me let me show you how we could take this and inject it into a
1:35:43
uh a header stack okay so let's say I have a a header stack here and I want to
1:35:48
use this because maybe I want to leverage some of the other Foundation 6 features right
1:35:54
um so and the total CMS Stacks don't have all of those features right so um
1:36:00
let's do that right so essentially all I need to do here is just take that macro so it starts with two curly braces and
1:36:06
then I do cms. text uh by default the text um function
1:36:14
in in here looks at the text collection okay um and then we're just going to
1:36:20
give it the CMS ID so in quotes we do
1:36:27
that there we go so now that macro uh will resolve the text and inject it into
1:36:34
this header stack okay and uh yeah if I preview
1:36:42
that there we go right now this this uh enters a
1:36:48
another um thing that we need to talk about if you no this uh this is my
1:36:54
project file for um My Demo total CMS website and uh if we look at my do demo
1:37:03
right we'll notice that um this and preview look very
1:37:09
different okay um total cms1 the current version um in preview what it did is it
1:37:17
it actually queried um your website for the current active CMS
1:37:25
data and um it displayed it inside preview super cool feature okay um it
1:37:33
had a lot of drawbacks that um people probably didn't even realize that it was
1:37:39
doing it and they were I'll be honest they were probably maybe blaming rapid weaver or blaming Stacks or why is
1:37:45
everything so slow because I want to previe preview my page that has like a
1:37:51
hundred different CMS elements on it and um you'd have to think uh so what
1:37:58
total CS did before is for every single item on the page well now it it will the
1:38:03
current version that you guys uh you know version one for every single one of these it would it would query the server
1:38:09
get the data build the HTML and we go down to the next one query the server get the HTML generate the data go and
1:38:16
and so on and so forth and you can imagine if if you're Chris Powers and you have 200 toggles on the page wow
1:38:21
that is a slow preview process right um and that's probably why a lot
1:38:27
of people were like the hell with preview I'm just going to publish right um if if we notice the the preview
1:38:35
process here was very fast okay and the reason for that is um
1:38:42
total CMS 3 it's its own little Standalone instance within
1:38:48
preview okay so if I go to the admin area here in preview and I go um hello
1:38:57
everyone okay and um I save that okay and I go back to my content
1:39:06
guess what okay so um the data within preview is its own managed
1:39:13
data okay
1:39:18
um I have some hope maybe some plans to eventually try to create some sort of
1:39:25
service that can maybe get the data from your server but I don't know that seems
1:39:31
crazy complex and um I'm not hor I don't horribly hate
1:39:37
having preview have its own data okay um is it possible that we can
1:39:43
like like it's almost as like as if you're running map right but without running map is it possible easily to
1:39:52
then siphon the off and move it to our our uh online yes um so um in Rapid
1:40:00
Weaver and this will be different in Stax Pro um Stacks pro has this ability
1:40:06
as well I haven't by the way I haven't tested total CS 3 at all in Stacks Pro um I I don't want to do it to that yet
1:40:12
um Foundation 6 is working right but I don't want to go down that rapid hole yet okay um okay so um in Rapid Weaver
1:40:19
you can go View and you can do to web server logs
1:40:25
it's kind of a convoluted way to get to it and then inside web server logs there's a button called Open document
1:40:30
and you can click on Open document it opens a folder buried way the heck
1:40:36
inside your your thing okay now um this is where preview generates all of your
1:40:43
stuff okay and I don't want to store it here because when we close this document
1:40:48
everything's gone okay however uh if we go up a few dire dories to this
1:40:54
particular directory where we see all kinds of stuff we scroll down to the bottom
1:41:01
here okay we'll notice that there's some TCMS data folders and it creates one for
1:41:06
each of your projects so here is my TCMS data folder um for my
1:41:15
preview okay um now this data is
1:41:20
ultimately stored in inside uh your ATT temp
1:41:25
directory okay inside your user folder and in theory if if you use any
1:41:31
of like clean my Mac and all that stuff um this data is a target uh because
1:41:38
sometimes those those apps will clean out these temporary folders okay um so
1:41:43
this data isn't guaranteed to always be here um and the the OS in some
1:41:48
circumstances might clean it up um I've been using this for about 6 months now now uh and it my data hasn't been
1:41:56
removed once automatically okay um so there is that so there is data in here I
1:42:03
can then get this data and I can download data from my server and plop it in here and it will work in preview okay
1:42:10
very um hopefully uh my go I've talked to Isaiah hopefully in inside Stacks Pro uh
1:42:18
will be able to define a folder so let's say you can create add something to your actual you know a folder in let's say
1:42:25
your home folder that then you can say like okay store the preview data here so it's a a you know a place where you can
1:42:31
Define where the data is um instead of in buried in some sort of temp folder
1:42:36
okay okay um so there we go there's a little Peak behind the covers um of how
1:42:42
that kind of works yeah I couldn't figure out how to get rid of that data in a project because it just kept coming
1:42:47
up and of course I couldn't figure out how to get rid of it ah okay um so yeah
1:42:54
uh yeah it is stored there if you wanted to Nuke it or if you want you know you could use the admin interface to uh to
1:43:00
deleted as well now um one bad thing about this
1:43:07
okay and it's this kind of I I put a lot of work on obviously into that auto admin
1:43:13
area and um it saddens me that uh it it actually
1:43:20
doesn't work in preview okay okay um if I preview
1:43:26
preview this in the browser if I click on that
1:43:31
uh my hopes were up I clicked on it looks like it works um but if you go it
1:43:36
just it just doesn't work okay um so that is highly
1:43:43
unfortunate um I haven't given up all hope on it um reason Tech small
1:43:51
technical thing it has to do with uh preview is running a PHP server it is
1:43:57
just it's meant for like testing purposes and some very lightweight previewing of your PHP applications okay
1:44:06
um this admin dashboard uses some very much more advanced routing um URL
1:44:12
routing and whatnot and the built-in PHP server just does not do that um sadly
1:44:21
um again I have I haven't given up on it but yeah as of right now the admin
1:44:27
dashboard will not work um with preview okay so if you want to
1:44:33
administer data within preview um you have to do your own custom admin
1:44:39
area I'm sorry again I'm working on it okay you know what though I don't think that's such a bad a bad thing
1:44:46
Joe I I really don't think it's the end of the world yep I have to be honest like like so So This Server right that
1:44:54
I'm using right here or well not this one this is the preview um but the demo
1:44:59
okay um I have this running uh locally in m works like a dream um and
1:45:07
like publishing locally is like insanely fast like you know even um I will go on
1:45:15
a a small TI raade um you will notice that total CS 3 is
1:45:20
Big okay um I'm going to go ahead and uh file uh we're just going to republish
1:45:27
all files on this project oh I just got to go ahead
1:45:32
and I use this on my laptop and my desktop and whenever I publish on my laptop it kind of severs this connection
1:45:38
on my desktop so uh yeah that's the folder so click
1:45:43
choose just thinking about it thinking about it and thinking about
1:45:49
it blah okay if you noticed that that was 5,000 files
1:45:56
okay um total CS 3 is Big um and uh yeah
1:46:04
uh I as of right now uh you know I I like the the ability to just publish um
1:46:11
I may come up with it in the future um if it becomes too much of a pain to come
1:46:17
up with some sort of different installation process for total CMS um so that you don't have to publish
1:46:23
every single time okay um I'm cool with experimenting with ideas around that
1:46:29
because I know how I don't maybe Stacks Pro hoping Stacks Pro um is is is better
1:46:35
with that um I I uh again I haven't used total cms3 but
1:46:42
um yeah maybe that will solve all our problems but I I may I am willing uh to
1:46:48
explore other options in the future um if we see that need okay but with that
1:46:53
said um exporting locally and playing with this in map super fast so most
1:46:59
times I will I'll make the change I just republish all files or rep you know publish locally and then preview you
1:47:05
know open up the map site in my browser and it works like a dream okay even the
1:47:10
the admin dashboard obviously okay um so there we go um I forget what
1:47:17
I was originally talking about before we were talking about publishing uh oh yeah local versus yeah using M to test
1:47:23
locally because like the admin dashboard doesn't work in preview okay um another
1:47:31
thing um total cms3 requires PHP 8.2 or
1:47:37
above and uh if you're still using rapid Weaver
1:47:44
8.9 um that uses PHP
1:47:50
7.4 so you have two options um you can either uh build out your site
1:47:57
and then always publish locally um you know to something like M that
1:48:04
will run a a a version of PHP 8 um and you're fine uh if you're using rap 9 uh you're
1:48:12
good because that actually has PHP 8.2 um as an option um I think it's off
1:48:19
by default uh you have to change it in the app preferences but you can change the default to be PHP 8 and you're
1:48:24
you're you're good there um another option is um I I am
1:48:30
running a modified version of of um rap Weaver 8 uh9 uh that makes
1:48:39
preview still work um if you're in that particular boat feel free to reach out
1:48:47
and um I'm happy to coach you through it okay um so yeah um there we
1:48:54
are that works because you help me yep exactly so um yep that's an unfortunate
1:49:02
thing but yep uh there we are okay all back to uh
1:49:10
content uh so we talked about um how to inject with these macros um I do like
1:49:17
the macro syntax uh if we look at the docs I think I have I think I think I
1:49:22
have them all documented
1:49:30
uh oh that form documentation is completely wrong now oh uh feel okay
1:49:39
here uh oh that's form. Fields nope it's not what I
1:49:44
want here okay the total CS content okay um here's a lot of the uh things that we
1:49:52
can do here so uh these are the probably the ones that we're going to be using the most okay um we have text style text
1:50:00
uh well Depot doesn't even exist yet okay um data is kind of like CMS data to
1:50:06
get just get raw data and then there's going to be image path okay um the image
1:50:12
path stuff while while you can learn the syntax that image Builder I nailed that okay with that copy macro button use
1:50:19
that um but yeah uh I will have better documentation on what all the various
1:50:25
options are for these okay um I'll quickly do an example here so like for
1:50:30
text okay actually I just realized that the syntax in this Doc is the old syntax
1:50:36
okay um but so I do cms. text um and actually
1:50:43
here instead of instead of doing it in here I'm going to uh let's do it in vs
1:50:49
code okay um
1:50:57
um so here uh is my macro okay and uh by default it's going to look um at the
1:51:03
text collection for an object called header okay but um as we know I can
1:51:10
create different collections if I want okay called different things okay um and
1:51:19
so um if we look inside uh here oh let's go into yeah I'm in the
1:51:25
right place right so if I go to text it's going to go to the text collection and uh we'll notice that this collection
1:51:32
is called text and the property that I'm getting this data from is also called
1:51:37
text okay well guess what um this essentially uh is a shorthand for doing
1:51:44
something like this
1:52:03
okay so um now it does I I put this on multiple lines to make it a little bit
1:52:08
easier to read okay you can have it all in one line as well okay um but what
1:52:15
this does is uh so this is a very expanded syntax where let's say I create
1:52:20
I have a different collection let's say I want wanted to get um uh the title uh well uh let's say uh
1:52:31
my um new post let's say I I get a new blog post and then I want the collection
1:52:38
to be from blog and I want the property to be from title okay or some something like that okay um so as you see you can
1:52:45
use this in a lot of different ways okay um there's actually other
1:52:53
there's better ways to do what I just did here I just wanted to show you an extreme case Okay
1:52:59
um but let's say uh let's say I created a a a different text collection okay for
1:53:06
some reason let's say you wanted to create a a new text collection right you
1:53:11
can easily do that and you can omit property right so you can be like I want to get the header object from uh the
1:53:18
collection new text now you have to make sure that the property is also text if it is you can just omit that because
1:53:24
it's the default right so you can do something power you know pretty powerful like that okay um again this is getting
1:53:32
a little Advanced but I just want to give you guys a sneak peek on um an an expanded version of that
1:53:39
syntax okay and how power most of the time you're just going to be doing stuff like
1:53:45
this right super simple all right um so that's the text
1:53:50
uh oh we want to look at the macro Builder really quick quick since since we were talking about macros uh we'll go over the macro
1:53:57
Builder and here you can Define the data type that you want to get okay so um you
1:54:03
know if you wanted to get a date um or and then here you can put in your object ID if you notice that this
1:54:11
macro changed okay once I selected date um it
1:54:16
what's cool here is that uh you'll notice that not only do I get the date but we have the ability to have a format
1:54:24
okay so you could Define the format of your date as well which is super super great now in this Builder let's say you
1:54:30
want to provide a custom uh collection in property you can do that here oh and
1:54:35
I apparently didn't update the Builder I need to fix that okay that's my bad that
1:54:41
didn't work wonder if it works if I go back to text nope that's my bad darn it
1:54:47
okay well there's a bug for me um
1:54:52
and we're not going to go over the used variable stuff right here okay but um hopefully you'll see uh this is just a
1:54:58
great way of kind of building a macro if we go to like color there's some really cool stuff that we could do here so this
1:55:05
will get the color it'll um transform it into an RGB value and actually make it
1:55:10
an 80% opacity okay which is super cool okay so
1:55:16
all the colors stored in the CMS are stored as solid colors and then you can
1:55:21
easily adjust the opacity on the Fly and there's actually other things you can do on the fly with colors uh we probably
1:55:27
won't go into that today uh since we've we're already hitting two hours okay but
1:55:33
um yeah uh we are you can adjust the Hue
1:55:38
and you can adjust the lightness you can do all you can modify colors on the fly with with a macro which is really cool
1:55:44
there's a lot of cool stuff with colors that we can do um yeah okay so that's
1:55:49
the macro Builder um obviously there's some some bugs here let me make a note for myself that I need to fix
1:56:01
that there was something else earlier today I said I found a bug I need to fix I can't remember what it is off top of
1:56:06
my head if anyone remembers what I said was a bug earlier let me know I should have wrote it down clicked on something
1:56:12
in the admin and it didn't load ah yes API docs thanks no problem
1:56:24
okay um okay next up is so we've kind of gone over text style text essentially
1:56:29
works the same eventually there will be all kinds oh wait that's on the admin side admin side will have the options
1:56:35
for all kinds of buttons and whatnot we're talking about content okay um image so here um the
1:56:46
image super powerful again uh it also has a preview macro that's built in okay
1:56:51
um you don't need the macro um I I just kind of I have it turned on Just for educational purposes because you you
1:56:57
have the ability to everything that you can do that I showed you earlier in that image Builder on the admin portal um you
1:57:04
can do here with the settings even Watermark okay so um yeah pretty
1:57:12
powerful uh we have the ability you can customize the height width and again if I change these values all these values
1:57:19
and that that image is created on the Fly so if I make this instead of 600 pixels
1:57:25
if I make it 900 pixels okay and I preview that image that we're looking at
1:57:30
right now that was just created on the Fly okay pretty
1:57:39
powerful um and then uh yeah you got all all the
1:57:46
ability the the sharpness the the cropping All That Jazz it's all here
1:57:52
okay um and then uh here we have just a header then we have gallery gallery has certain things um all the image settings
1:57:59
that you see here are going to be applied to every single thumbnail obviously right so you can build out how
1:58:04
big do you want your thumbnails to be do you want to crop them do do you want to apply any effects okay and so on and so
1:58:10
forth um and oh doesn't look like I added all the watermark options I need
1:58:16
to add more Watermark options to the gallery
1:58:27
cool okay um yeah I need to add the watermark stuff oh I think I made it so if you type in oh that's right it's ws-
1:58:35
logo and then when you okay when you type in the setting it shows all the settings
1:58:41
excellent I was too clever for myself so you type in the file name of what you want your watermark to be so in this
1:58:47
case it would be uh if we go to my gallery right and my water marks I would
1:58:53
get the actual name of of of the actual image right um so in this case Weaver
1:58:59
space.png and that's what I would put here okay um on the on the in the admin dashboard
1:59:07
right when we when we did uh you know everything uh we had it was nice because it's all tied into the CMS it actually
1:59:13
gives it to you right so I can click down here I don't need to know the name it just automatically adds them here
1:59:19
obviously the stacks interface doesn't have that level of integration so you actually have to figure out the name and
1:59:25
just put the name in here okay all right um so that's the gallery
1:59:32
also uh right now there are zero options for customizing the look and feel of the
1:59:38
actual Gallery right so uh if we go to you know the content so like oh well oh
1:59:44
this is preview right so you know the gallery
1:59:50
options like you know customizing the color colors and you know maybe turning on and off buttons or turning on and off
1:59:56
um thumbnails there are no options for that yet okay it will come I just again
2:00:01
I'm trying to get as much of this you know done as POS quickly as possible um I think the default settings that I
2:00:08
chose are a good starting point but yes we will have options to customize the
2:00:13
style of all this stuff as well okay um and those options will be here
2:00:19
eventually um in the future all right um any questions
2:00:26
yet I know I've been kind of jumping around a little bit I've been trying to stay focused all right um let's dive into a
2:00:37
Blog so blog is essentially the same um in terms of we you probably want a blog
2:00:44
list page and a blog post page okay I think it's uh that sort of um workflow
2:00:52
just makes
2:00:57
sense so um how do we do that right let's go to the blog post page here okay
2:01:05
you'll notice that I have a layout of blog posts all right it's just a grid I think I'm using the foundation 6 block
2:01:12
Grid or maybe it's the starter pack no it's Foundation 6 okay so um this is very similar to how
2:01:20
feeds works if you've used feeds to autogenerate
2:01:26
layouts this will feel at home to you okay if this sort of thing is new
2:01:33
you this might require a little bit of brain work okay um there is a set of stacks called
2:01:42
Loop Stacks okay um and they
2:01:48
are where are they I have it in layout oh layout
2:01:54
helpers sometimes the icons aren't showing up I'm not sure why whatever okay so there here we have a loop blog
2:02:02
stack okay and what this does is uh you essentially you configure what your
2:02:08
collection is okay so in this case blog and here I
2:02:14
have a bunch of macro hints for you that you can copy and paste to inject the data out a
2:02:25
Blog okay so uh actually let me make a quick note about something
2:02:34
uh um so here you can just copy paste this and we'll notice that I've used those
2:02:40
down here so um the these aren't again these settings are here purely for you
2:02:46
just to copy and paste stuff and actually stuff like pipe raw doesn't even need I fix that that's not even
2:02:52
required anymore okay so that's actually a nice thing I I worked hard
2:02:58
to that was a simple thing or it seems simple but man that was hard okay um so
2:03:03
we no longer need raw for anything okay which is cool so like if I wanted the post
2:03:10
summary I would just put in I can copy and paste that in okay um so Loop blog is going to Loop
2:03:19
through every single blog post and apply this layout to the
2:03:26
data so um it's going to create a block grid cell for every single blog post and
2:03:33
as you see here that's exactly what it's doing it's creating a block grid cell for every single blog
2:03:41
post so let's go through the data here uh we have an object link stack this uh
2:03:48
stack allows us to easily uh link to an
2:03:54
object as long as we've defined the link in the collection so if you remember
2:03:59
earlier on today I talked about how uh in a collection you can save a URL for a
2:04:08
collection so what does that mean okay let's click on a blog
2:04:16
post hello what
2:04:23
happened did I break something let me go maybe I guess I broke something hold on
2:04:29
one second uh let's just go to the dashboard and go to my collection go to
2:04:35
blog uh edit my collection oh I have no URL okay um so right here I have no URL
2:04:42
saved in my blog okay what do I put
2:04:48
here what we put is the URL to the blog post
2:04:57
page all right so I'm just going to use that as a starter and we're going to
2:05:03
paste that in and it is going to be slash blog
2:05:08
SL post.php that's the URL to the blog post page
2:05:14
without any sort of IDs or any of that stuff okay uh we're going to go ahead and save that
2:05:22
okay now let's go back to our blog and if I click on this now there now it
2:05:27
works okay so um what the blog link
2:05:33
does uh oops I changed Pages uh what the object link does is it looks at the The
2:05:40
Collection gets the URL and then it will automatically um you know link to the
2:05:47
particular post as long as you configure it properly okay so um in here of the
2:05:54
object we need to we need to give it the the ID of the object and postop ID is is
2:06:01
how we do that okay for this because in here we'll notice that in Loop blog we
2:06:07
to get the ID we need post ID now since this is a stack or not we don't want to
2:06:12
Output that we just we just kind of paste that without the curly braces here and then our collection is
2:06:17
blog now you can do a custom link if you wanted okay so if you used a custom link
2:06:24
you wouldn't it wouldn't actually look in the collection for the URL okay however I am going to encourage you to
2:06:32
save the URL in the collection why is that okay the reason is this URL is used
2:06:40
or it will be used for more things than just linking of blog posts on the
2:06:47
web because many things that we need to do for a Blog um I the CMS needs to know
2:06:53
what the URL to a root URL to a blog or an object ID is for example um RSS
2:07:02
feeds if I want to generate an RSS feed which isn't a feature in cms3
2:07:08
yet I I generate an RSS feed the CMS needs to know where to point people
2:07:16
to okay and this URL is that we want want to Auto generate sitap
2:07:23
files for Google and search engines in order to generate a sitemap file we need
2:07:28
to know the full URL to a web page this URL is needed for that okay
2:07:36
based on this URL I can build out the URLs for every object in a
2:07:44
collection that way we can do it RSS feeds um Json feeds all kinds of stuff
2:07:50
okay um primarily RSS and sitemap both of those aren't implemented
2:07:56
yet they will be okay so that is the importance of
2:08:01
this URL field in the
2:08:07
collection right this is very similar to in total cms1 you go to the blog post
2:08:13
page and you preview and then sometimes that light most of the time that light box would show up sometimes it didn't
2:08:20
right and then you'd have to click save it and then save it into the CMS right that whole work workflow is gone okay um
2:08:29
yeah don't need to do that anymore in your admin area save this as a part of
2:08:34
the collection okay cool any questions or
2:08:39
confusions on that nope okay um we do have a pretty URL setting I won't go into that right
2:08:46
now um but yes we do have the ability to do pretty URLs as well um for this object link okay um that's actually
2:08:53
another thing I'll probably have to add in here is some sort of HT access Builder or something like that that
2:08:58
would probably be a cool utility uh let me add that to my notes HT
2:09:05
access for pretty
2:09:12
URLs okay um so that's the object link uh and then here we have the image stack
2:09:18
okay now in here I want to get the uh main image for a blog post okay so um
2:09:26
the object ID as we saw from the object link we we give it the ID of the object
2:09:31
now this is just the run-of-the-mill image stack the same one we used on the main content page but in this case I I
2:09:39
need to define a custom collection and property because if I don't select this it's going to look in the image
2:09:45
collection for an image and we don't want that so what we want to do here is
2:09:50
we want to look in the blog collection and we want to look for the property
2:09:55
image now with that said um if you haven't realized total CMS 3 requires
2:10:02
that you understand your data what do I mean by that what it
2:10:09
means is you have to know in your collection okay if I go to blog okay I
2:10:16
need to know what my fields are I need to know know that I have a collection called blog and inside blog I
2:10:24
have an image called or I have a a field called image or property name image right
2:10:30
here you have to know that okay um so if
2:10:36
you want in here I want to access that image so in this image stack um I'm
2:10:43
giving it the post ID I'm giving it a collection of blog and I know the
2:10:48
property that I need is called image If This Were let's say a custom
2:10:53
collection that had um multiple properties let's say I had a screenshot
2:10:59
or something like that okay let's say I had a property name screenshot in my
2:11:04
products okay uh collection that's what you would do here you would go
2:11:10
collection products the property that I need to get the image is called
2:11:15
screenshot okay let me put this back so it doesn't break my uh page here blog
2:11:22
right now you'll notice that there's this array of buttons down here okay and that's this thing called
2:11:28
use variables and as you know um post. ID
2:11:34
here is a variable that references um the ID of the particular
2:11:40
post that for this iteration of the loop remember so this is looping through
2:11:46
every single uh blog post and for each instance what we want want to do is we
2:11:51
want to get the post ID and we don't want to literally look for an object ID of post ID if I were to turn this off
2:11:59
this would literally look for a a blog post with an ID of post. ID that's not
2:12:07
what I want so what I do here is I say hey the object field is a
2:12:13
variable okay and so what it's going to do is going to dynamically look for it's going to look up what post ID is and
2:12:19
then look for that object object hopefully that makes sense now we have the ability to there are some times
2:12:26
where using a variable for the collection and the property would be
2:12:32
useful um by default I think most the time you're just going to statically enter it in okay but let's say you
2:12:38
wanted that to be a variable okay you can then do that okay but right now this
2:12:43
is literally looking at the collection blog and literally looking for a property called image
2:12:54
okay and then all the various image settings that we would have you can customize whatever this is right with
2:13:00
height crop areas all that stuff all right um here underneath uh
2:13:08
the the image uh I have a header stack and then I just I simply if you looked in here right I copied the the title
2:13:15
macro and I paste it directly into the header stack and that then gives me
2:13:21
if we go back to the blog page so I have if you notice here I have my image if I
2:13:27
click on it it takes me to the link here I have a header okay below that I have a a H6 a
2:13:35
small header that contains the post date okay and here you'll notice I do
2:13:41
post. dat and then I can customize the format so I know a lot of you hate uh
2:13:48
you know or do things wrong right and you have year month day right so weird
2:13:55
right but hey it works if that's what you want right oh that didn't work did
2:14:01
it wonder if that had to do with some of my data inside the CMS might be wrong
2:14:06
inside my preview EMS let's publish
2:14:14
that oh oh it did oh it did do it right but it did it as one cons oh I did
2:14:22
backslashes interesting if you want a backslash here let's do
2:14:30
dashes oh there it goes right so year month day um normally you would do
2:14:36
forward slashes right for
2:14:44
Slash and that would do a forward slash if you wanted a back slash maybe I don't
2:14:49
you would actually have to put two in here um
2:14:56
interesting that's a a programming Quirk oh oh it did
2:15:02
what how would you put in a backslash that's interesting I'll have to look into
2:15:11
that you have to put here let's see I would you have to put three in there this is just
2:15:23
nope interesting all right I'll have to look into
2:15:28
that you wanted a back a
2:15:34
backslash anyway you get you get the point right you can also add in time right I forget the the the exact thing I
2:15:42
think it's like uh let's see it's h colon M colon s i I'm guessing I don't
2:15:48
know I'm going to guess at that oh look at that I guess right right so you can you can do the full date as well
2:15:55
okay with time okay um and then here I just have the summary um in this case I don't need
2:16:02
the raw anymore um it doesn't hurt if you had it in there but um it's not required any longer um and there we go
2:16:09
okay uh and then I have a uh object button that's similar to the object link
2:16:14
you can link to the particular um object with a button okay pretty simple all
2:16:21
right so that is the how kind of lists are are done right um if we look at the
2:16:27
feed it's very similar I have a loop feed stack that has helpful macros here
2:16:32
as well very similar thing um I'm looping through I'm creating a block Rd cell um you can do this with any sort of
2:16:39
layout you can use with Bento as well or whatever you want right um and then here's my image
2:16:46
obviously I my collection is now feed okay uh and title and here I'm
2:16:51
outputting the creation date the updated date and the content
2:16:57
okay now in this particular case um feed it it's just the feed there is no post
2:17:03
page for feed you could create one if you wanted um but yeah it's not
2:17:10
required all right um now let's look at the blog post page okay
2:17:17
um so uh here we need to load the
2:17:22
entirety of a particular object right in this case the blog post
2:17:29
now if we if we go here and we look if I click on this if we look at the URL we'll notice that um it loads it with
2:17:37
question mark ID equals and then the ID of my blog
2:17:43
post okay um so that's how the URL structure works um and there is a object loader
2:17:52
stack that helps us do this so inside uh the stack settings or inside the stacks
2:17:58
Library there are a bunch of data loaders okay and you can load all kinds
2:18:04
of data um in this particular instance I want to load an
2:18:10
object okay um and the object I want to load is
2:18:16
the blog post that is passed from the URL right so here all you have to do is you say um load from
2:18:23
URL load from The Collection blog and I I want my variable name to be post and
2:18:30
what does that mean okay so um if you remember um on the blog loop stack um we
2:18:38
we did post title post date and that's because um the blog loop stack creates a
2:18:45
variable for us called post and you can't even you can't even change it it just does that for us okay so everything
2:18:51
has to be post makes sense um this object um loader is a a very generic
2:18:59
stack now for blog um we want to load in as everything called a variable
2:19:05
post so um that way I can do things like post. tile post. dat but let's say this
2:19:12
was um let's say this wasn't a Blog okay let's say this was a product page and I
2:19:18
was loading from a um product collection okay or H let's I'm going to
2:19:24
load it from a Stacks collection and this is going to be a stack okay so now um here instead of
2:19:32
post. tile I would use um stack.
2:19:37
tile right so on and so forth um so yeah that's what that
2:19:42
variable is let's go ahead and let's put everything back so I don't break my
2:19:47
page okay so um here we are loading this object and um from then on I can use the
2:19:57
the post variable to reference the data from my loaded blog post change your
2:20:04
your header back oh
2:20:11
thanks okay so again similarly to the image I'm going to load the the object
2:20:17
ID is post. ID just like we I've explained four we're going to load it from blog and the properties image okay
2:20:25
and then all these settings further down I have my header I'm going to load post title post date post content now you
2:20:32
might be asking how do I know what what data how do I know this is post. content
2:20:38
how do I know that well again you need to know your data okay so if I go to my blog well
2:20:46
let's go to uh let's go to the dashboard and if I go to my my blog
2:20:52
I know that here are all the properties that of a Blog so if I want the content
2:20:57
it would be post. content if I want the extra content it would be post. extra
2:21:02
post. tile now there's things like tags that are obviously a little bit unique
2:21:07
because those are multiple things right and we'd have to learn The Twig Syntax for that and um yeah there there's
2:21:15
different SG you know Syntax for that um but basically you would you would access all this data you know post. archived
2:21:23
stuff like that okay and there's all kinds of you know layout helpers that we can look at to do this um so here I've
2:21:29
added my title I've added the date um the post content not sure why I have
2:21:35
that in a header but whatever um uh a gallery image okay so
2:21:41
here I'm taking an image one image from a gallery which is kind of cool um and
2:21:46
we can actually pull in a random image from the gallery and then below that I'm displaying the entire gallery right um
2:21:54
earlier we saw we had x-ray data um if we go back to my blog a blog post page
2:22:00
here okay um this is just uh it's kind of a debugging tool it basically um it
2:22:06
allows you to Output the data of whatever we're processing okay um so
2:22:11
that is inside here it's called x-ray data and in here you can just put in uh the variable that you want to Output so
2:22:18
in here I want to look at what post is right and that gives us access to so we
2:22:23
can see we have ID we have content we have image or title now what's kind of
2:22:29
cool is let's say I wanted to get to the um some of the exf data for my for the
2:22:35
image right uh unfortunately this particular blog post has no image uploaded to it um
2:22:43
but uh let's fix that um what is this future future approved here let's fix
2:22:51
that let's go to my dashboard we're going to go to collections blog and
2:22:57
we're going to go future proofed I think it was this one future I think it was this one CU I
2:23:04
remember that that particular image um okay so this this image uh this was
2:23:09
created by the factory uh let's add an image that actually has uh xif
2:23:16
data I know that one does okay so I've uploaded my blog post post uh I've
2:23:21
updated it so now if we go back right now I have that image now let's go into
2:23:27
here now if we go right we'll notice that I now have exif information in here
2:23:34
okay um so for fun um let's just output the camera okay let's put it in a header
2:23:40
okay for fun why not let's put it like right below this
2:23:47
image um and so I'm just going to go in here we're going to add in uh let's add
2:23:54
a header right let's make it like a let's make it small H6 okay and what I'm
2:23:59
going to do is I'm going to say um shot with my and then I'm going to do curly
2:24:05
braces I'm going to do post. image. xf. camera
2:24:27
that and let's let's look at that syntax so post because everything in for this
2:24:32
object loaded everything into post okay so in that uh I want to I want to get
2:24:38
the image uh and then inside the image I want to look at the exif
2:24:43
information and of the exif information I want to get the camera information so I can do post. image. xf.
2:24:53
camera and voila shot with my Canon 5D Mark
2:25:00
I and you can do that with all the data all the exf data all the other data that's stored in um uh yeah all of it
2:25:09
pretty cool right um super exciting
2:25:15
stuff any questions
2:25:21
no I know we've been going for a lot of hours now so uh you know but I wanted to be this to be extremely thorough to go
2:25:28
over everything um so that's the object data loader um let's look at some of the
2:25:33
other Stacks I'm actually not even using in this in this page just kind of show you what you could potentially do with
2:25:39
them let's look at layout helpers we have a conditional okay um so in this
2:25:45
conditional we can do various things okay um let's we're on a blog post page
2:25:52
so um let's uh here for fun let's do something
2:26:00
actual real okay um I don't let's look at that image okay let's say uh the if
2:26:07
we look at the image the make of the camera is a Canon okay so um I'm going
2:26:12
to do something probably doesn't make much sense but it's it's an example okay so in this
2:26:18
rule I want to do um if post.
2:26:24
image. xif do uh what was it make make
2:26:29
okay if the make
2:26:36
equals Canon okay then we're going to put in this
2:26:44
header okay so um so yeah pretty cool uh I made this very very wide open um and
2:26:54
it's just a very generic twig if statement and in order to really get the
2:27:00
most of it um yeah you got to learn a little bit of twig probably so you can go to uh twig and you can go to if um
2:27:07
and there's all I'll probably have docs you know some that replicate some of this these examples but you can do all
2:27:13
kinds of stuff right here is like you know if temperature is this you know greater than 18 and temperature is less
2:27:19
than 27 um you can do all kinds of stuff I if it's empty if it's not empty um
2:27:26
yeah so really cool stuff um you can do here um and let's test this out I'll be
2:27:33
honest I haven't even done this this is all on the fly so let's go back to where is that page this page
2:27:39
here all right so that's uh published and now that is displayed
2:27:46
because it's it this particular image had the make of of Canon but let's go um let's go to a different Blog Page and
2:27:52
that won't show up at all right so that didn't show up at all because it's not that it's not it
2:27:59
doesn't this particular image didn't have a make a camera make of Canon right
2:28:05
um now this you know you do even simpler things um you could do something like um
2:28:10
let's say if post. draft equals
2:28:17
true right and what's kind of cool if you notice here um actually put the condition here so you can kind of see
2:28:23
that um you know within while you're working on your layout right so here I
2:28:28
can see if the post is set to be draft then display this right so you can do
2:28:34
all kinds of cool stuff with this conditional you can also do stuff like you can do an else if rule so you can do
2:28:40
if this else if and you can add all kinds of stuff and then you can add like a catch all else at the end so you can
2:28:46
be like if it's true if else if this else if this else blah right so it's
2:28:53
definitely a pretty cool very useful stack for
2:28:58
customizing um your layouts based on the data that you have available to
2:29:05
you okay um there are other looping Stacks
2:29:10
okay so uh we looked at the one that looped a Blog um you can also Loop through a gallery um you can uh oh if
2:29:18
you could toggle right so um and then actually instead of like doing this this if condition okay
2:29:25
um you could just use the toggle and essentially it just says um you know I can do uh post. ID object and then uh I
2:29:36
want to do blog draft so uh this essentially says if uh
2:29:44
the draft is set then uh you know display this it's
2:29:50
essentially the same exact thing I just did in this conditional uh but yeah just maybe a little bit and then we have an
2:29:56
else logic so on when toggle
2:30:01
off pretty cool right and uh this stack if if it's we're just used because there
2:30:07
is a uh oh I don't actually have here let's
2:30:12
create a new collection oh this site has a bug hold
2:30:18
on one second we go to to my other test
2:30:27
site we go here here oh I do have toggle so like here you know we do have a
2:30:33
default toggle um so like you can have as many toggles as you want and obviously if you just use this without a
2:30:41
custom collection um you know then you would be like you know let's say I had to toggle my check right so this would
2:30:48
just be uh my check so um this again even though I'm
2:30:56
on a blog post page this would always look for the global toggle um collection
2:31:02
and it would look for the object my check hopefully that makes
2:31:08
sense all right um okay I I'm I think I think I'm
2:31:14
going to be done uh with the demo I I think we've gone quite long enough and
2:31:19
uh I've shown a lot of the basics a lot of behind the weeds there's still even more behind the weeds right um but
2:31:27
hopefully you can see the power of this and um yeah start playing around with it
2:31:34
okay I'm happy to stay on we don't over right now but if you have any questions
2:31:39
I'm happy to continue on and um yeah CH
2:31:44
chat
2:31:52
sounded a bit gobbley goop there for a minute oh oh did I sound like gobbly
2:31:58
goop someone else was talking ah okay I think you're just getting
2:32:04
feedback from someone's
2:32:11
mic thanks Joe that was very nice very helpful
2:32:16
excellent what uh did it clear up anything for you Bill got me wondering
2:32:22
about something I was playing with the other day the conditional yes I was trying to um establish a condition where
2:32:30
something would happen if a if a pitcher um uh had an image or didn't have an
2:32:38
image if a picture object was empty is empty the key I'm looking for there
2:32:44
yes I I don't think that's what I tried for some reason or other yeah um when
2:32:50
image is empty actually um if you look at that that raw data output there there
2:32:57
is some I think like uh size
2:33:02
zero okay so if you do image. size equals zero then you know there's no
2:33:09
image that'll do the trick that's playing with a schema that has two
2:33:14
images as as the main image but only one of them in there
2:33:21
sorry I melted your brain [Laughter] [Music]
2:33:29
dad um so uh one thing oh one thing I didn't go over in Luke um as of right
2:33:35
the current beta that is out you can there's no filtering
2:33:43
filtering okay so there I I do hope to get that in this
2:33:49
next release that's the one feature I plan on adding is some Lo filtering and
2:34:01
sorting
2:34:06
okay any other questions questions Joe when you when you created a Blog and you
2:34:12
do a search for a certain something it brings back your results in I presume
2:34:18
time order and then if you go into one you can go
2:34:23
can you go from one to the next of your
2:34:30
results uh I'm sorry say it again I I missed you there so you you've got a
2:34:36
Blog and you do a search and your results come up you get a whole series of them and you click on the first one
2:34:44
will you then be able to go with an arrow or something like uh you go to the
2:34:49
next next one of your results um got it got it um so so you you're on a a page
2:34:57
and you search and you filter out for a list and you get a filtered list of blog
2:35:03
posts and you click on that and it takes you to that that blog post page yeah
2:35:09
yeah at that point you want the ability to do next but not only next like in
2:35:14
some sort of logical sense you want to know about the search you did on the previous page
2:35:20
next yeah uh that is a uh I I would have no idea how to
2:35:27
implement that off the top of my head um so that currently isn't in the road map
2:35:32
um it's interesting idea quite complex though that's not something simple I can't can't understand why you
2:35:40
can't know how to do it um yeah that would require some
2:35:46
thought it's interesting idea though um I don't think I've ever seen that seen that oh well there you go there was a
2:35:54
question on rapid waver the other day someone asking whether they could use Compass if CMS free yes um and because
2:36:04
compass compass right now um has a specific integration built for toal CS
2:36:10
one um so that would have to be updated so that it would work with total
2:36:17
definitely possible possible good um but what that does is it doesn't
2:36:23
do search um but what Compass order of your blog
2:36:28
post not by any search but Knows by okay and then it would know
2:36:36
next in previous or possibly um Scott stack blog
2:36:46
select uh yes oh which Scott stack um now Scott Williams has got a stack a
2:36:54
um which joins blogs together ah
2:36:59
okay yes uh yep that stack does yeah that that could work too uh the well uh
2:37:06
oh you're talking about his um can't remember what it's called blog um the one for blog where you can like link
2:37:12
multiple blogs yeah that that I I doubt that will well I mean uh I mean you'll
2:37:19
kind of be able to do that out of the box with total CS 3 okay um Jeff by the
2:37:24
way I muted you because it was there there your mic was causing some feedback so if you want to C un yourself okay
2:37:29
sorry about that um this this new system doesn't seem to
2:37:35
have as good of audio uh as Zoom does right Zoom zoom's
2:37:40
audio I think they've nailed it so yeah this this while I like some of the other
2:37:45
features of this um its audio processing isn't as good as Zoom so wait and see
2:37:52
what the recording's like yeah exactly yeah to Jeff's question though for a sec
2:37:57
if he could sure um if if he had searched uh for a subset of a
2:38:04
Blog could could it not be reasonable to to have a menu created for that subset
2:38:10
which would then work fine with compass yes um yes so Compass looks for
2:38:17
um you can you can point it to a menu um and then it would use that menu um to do
2:38:23
things and in theory we'll be able to do the same thing with total CMS 3 yeah also I mean uh and and something I
2:38:31
didn't have here um in the demo yet you could also have um a Blog loop stack on
2:38:37
the actual blog post page just like you could on with blog now that then
2:38:43
displays you know a list of blog posts that maybe you might also like right um
2:38:49
and when I add filtering we'll probably have to play around with doing the you know show related blog posts sort of
2:38:55
thing um with looping so that we can um you
2:39:01
know basically filter based on the data
2:39:06
from the blog post that's loaded on the page we're on right um so that will
2:39:13
definitely be possible um so yeah
2:39:20
okay Joe uh I have two questions um sure first one is about the um watermarks uh
2:39:26
if I am is it possible to um add a pattern as a
2:39:32
watermark so that I can create an overlay um yes uh as of right now you'd
2:39:40
have to like create a pattern uh yeah you'd have to create something and and you could stretch it over the entire
2:39:46
image if it wasn't large enough but you'd create something sort of PNG pattern yourself and then stretch it over um yeah right now it doesn't have
2:39:55
like a it's not possible to repeat it so that that you have a small
2:40:00
Watermark and you can repeat it so that it fills your whole image uh right now
2:40:07
that ability isn't available um and uh yeah that's not a feature of the the
2:40:15
library that I'm using either to help me out with that um okay I I did think
2:40:20
about that and I think it would be a cool feature but for now I think the the easiest way you could just create an
2:40:25
extra like even an extra large version of it and then um we can play around with you know overlaying it and if it
2:40:32
overlaps the edges who cares um that could be of course but that's that's a
2:40:38
large image that you have to yeah it could be yeah I agree um it's not ideal
2:40:44
but I'm sure we can we can try to come up with some sort of workaround for that okay uh the next question is about the
2:40:52
exive data if um if I upload an image
2:40:57
and then I create this instances of of this images the smaller versions yep the
2:41:03
access data is always copied to it is that's correct um so as of right
2:41:11
now that exive data is not copied to the
2:41:18
thumbnails um you still have access to to um the thumbnail so if someone were
2:41:24
to download the thumbnail that exf data is not there that's great that's what I
2:41:31
that's what I like yes because I only want to share the exf data
2:41:36
um as it's at a special Point not not always yes that makes sense yes
2:41:44
so like to share sometimes not yes okay only the original image that you
2:41:51
uploaded will contain the exif data that's great
2:42:02
Perfect Hey Joe can you switch back to grid view oh sure
2:42:21
[Music] sweet any other
2:42:27
questions anything you'd like me to test out or play
2:42:39
with it's bit delayed there it looks pretty good man I'm excited yes uh so the stuff that I
2:42:48
have here let's see what stuff I did in version beta 7 so far uh oh uh the
2:42:54
current beta um creating a new custom collection is is broken I fixed it now
2:42:59
it's already fixed um obviously uh but it'll be in the next beta sorry about
2:43:04
that um oh I didn't talk about hey so I
2:43:11
told you I have that new schema right so with the blog with the blog Legacy thing
2:43:17
okay let me uh let me show how that is uh so if you um when you upgrade to
2:43:27
beta7 okay um what you will notice is that the built-in blog schema has um a
2:43:36
limited number of fields okay or I mean it still has all these fields but it doesn't have extra and extra two and
2:43:42
some of those extra fields that I felt weren't needed for a Blog okay um and if
2:43:47
you go into your uh collection and you go into your blog and you click on this what you'll notice
2:43:54
is that that the data doesn't even show up in the form okay it's still there in the CMS
2:43:59
though uh at least until you save each one so let me let me show you how um if
2:44:06
you wanted to take an existing blog that you had set up in the existing beta and
2:44:12
um yeah migrate it back to use blog Legacy um this is how you would do
2:44:17
it um so so um you might think oh I'll just go to edit my collection and then
2:44:22
change the schema okay from being blogged to blog Legacy um but I don't
2:44:28
allow you to change the schema for a collection once you've created it okay
2:44:34
that just seemed like a bad idea okay um so what we're gonna have to do is you're gonna have to manually do that all right
2:44:41
um so uh to do that just simply you're going to have to find go to your TCMS data folder okay
2:44:49
uh which is under my websites demo all right so we have TCMS data and then what
2:44:56
we do is we go to you'd find your blog okay now another another interesting
2:45:03
caveat is um the file that you need to edit is actually not visible in finder
2:45:09
okay um so we're going to have to drag this um into actually let's I'm just
2:45:14
going to drag the whole thing into into I use vs code it's free um whatever code
2:45:20
editor most code editors going to be allowed to see and edit invisible files
2:45:26
okay um so let's make this a little bit bigger so if we go to blog okay uh that
2:45:34
bigger even still uh you'll see that there is a meta file.
2:45:41
Json what you need to do is you just need to take this uh this schema and just as you see it set to blog you just
2:45:48
need to change it to blog Das Legacy and save it okay now uh once I've done that
2:45:57
I can then uh let's refresh
2:46:02
this oh I'm not on that page I'm on a different site darn it hold on
2:46:08
demo one it's not
2:46:16
bad we go into here we going into blog go to
2:46:23
edit oops what happened there that's
2:46:28
interesting I think I think the the blog data in My Demo here
2:46:35
is is why did that change that should have totally not broken
2:46:43
anything okay well I will have to good thing I tested this because I
2:46:48
was just going to ship that and everyone else would have been like I did what you said Joe and I broke it so I'm going to
2:46:54
have to see why that breaks
2:46:59
it that's what you will have to do I will make it so that that
2:47:05
works um either that or you could just go ahead and create a new collection okay uh I mean chances are most people
2:47:12
are just using dummy data now anyway um but you can still is but you said custom
2:47:19
collection is broken right now right uh well I'm sorry once you ship oh this
2:47:26
this site doesn't have the beta oh hold on this doesn't have beta 7 that's why
2:47:31
it's not working okay hold on one second uh let me rebuild let me quit let me
2:47:37
quit rap reever my the stacks are still running beta 6 they don't have beta 7 in them so when I've been publishing it
2:47:43
doesn't have all the fixes that I've already done uh let's see throw that beta 7 out
2:47:50
to us uh I I want to have it done by tomorrow but it depends on how quickly I
2:47:57
can get the filter and sorting thing
2:48:03
done on I'm I'm creating a new build right now
2:48:27
all right that's uh done
2:48:52
oh what happened
2:49:01
here yeah I know it's not open want it to open what the heck just happened
2:49:14
here what the heck I know it's not open anymore
2:49:20
[Laughter] [Music] what the
2:49:30
heck what that is uh that's something
2:49:36
new I've never seen that
2:49:45
before is it like still running in the background or
2:49:58
something activity monor won't even load I don't know something something as bad as happened to my Mac I don't know what
2:50:04
I just did but right I'm pretty certain that works all right here let me go here
2:50:12
I'll change it in a different place uh let's go to that I got too many let me
2:50:17
go back here
2:50:32
go this is running beta 7 um it's not this is a standalone in it's not tied to
2:50:37
Rapid Uber or Stacks but um same thing should happen so if I go here I edit my
2:50:43
collection this is set to be a Blog collection okay um going to go ahead
2:50:49
and wow that's big uh so I go into here I go into blog
2:50:57
go into meta Json I set this to be Dash
2:51:05
Legacy okay there we go yeah so now it says blog Legacy uh now if I go into um
2:51:12
the data for that blog wait what
2:51:23
oh interesting that's that's a bug uh it's
2:51:29
hidden because I hide anything called blog Legacy that's funny
2:51:35
[Music] uh I'll just do
2:51:42
this oh it's just blog oh interesting
2:51:51
well looks I have some bugs to fix all right uh but
2:51:58
oh so there are some warnings here but it actually did work because I see all the the the fields like archived was
2:52:04
removed labels were removed but they're all there
2:52:09
now and yeah here's extra content right so good thing I tested this there are some bugs I need to fix there um but
2:52:17
yeah so that's the way you will if you have an existing blog that you need to migrate you'll need to do that if you
2:52:23
want to have all those extra Fields cool I'm going to set this back
2:52:29
blog uh we'll leave it at blog Legacy so I remember to fix it
2:52:52
sweet anything else guys are we ready to call it almost three hours
2:52:59
man time to go and have and come back again I'm glad it's
2:53:05
recorded wife pay attention because the test is gonna be [Laughter]
2:53:15
later is the final tomorrow Joe at The Hangout yeah exactly Jo s send out a
2:53:21
questionnaire we got answer all the questions before tomorrow night
2:53:27
yeah yeah thanks very much for that Joe thank you guys quite something
2:53:34
yeah hopefully we'll see many of you good night bye