Hi Ben, 
I don't know your "web background" and it seems you are new to TW 
<https://groups.google.com/forum/#!profile/tiddlywiki/APn2wQdE15ouQN_aiE67o8wb3IJOk2UW2_xl0mH4a_fvSLUrGkRdMhAAEF3z9V9x_6E1Yl8B4Lpr>.
 
I try to start with high level info, but I'll go "geeky deep" very fast. So 
I hope you can digest them ;)

On Saturday, August 29, 2015 at 3:06:16 AM UTC+2, Ben H. wrote:
>
> I'm not trying to create a static page, I'm trying to start from a totally 
> blank canvas.
>

If you really want to go that way, you will need to dive very very ... very 
deep into the TW core. 

In TW everything is a tiddler. Even the core itself are tiddlers, that can 
be overwritten and modified one by one. 
See all the *.js tiddlers. This makes TW so extremely flexible. 
 

> The issue I have is the core contains a lot more than just a "library" of 
> tiddles you can use to build an application; it also contains an actual 
> application, the default tiddlywiki, and doesn't make it obvious where one 
> ends and the other begins.
>

That's right. 
 

> There are 1140 tiddlers in there, the majority of which define the ui and 
> functionality of the default app.
>

The actual v5.1.9 empty.html has 1218 shadow tiddlers. ... Which you name 
"the default app". Most of the time we name it "*vanilla TiddlyWiki*" or 
empty TW or empty.html

As I mentioned and you found out in TW everything is a tiddler. 

If you open the 
 - $:/ControlPanel and click the "Number of shadow tiddlers:" it will open 
the 
 - $:/AdvancedSearch shadow tiddler with the filter: 
[all[shadows]sort[title]]

It shows you the list of all 1218 shadow tiddlers. 

The above 2 tiddlers are part of vanilla TW, So basically you could remove 
them, which results in loosing the "advanced search" functionality and the 
TW Control Panel. .. This is true for every other TW functionality. 

----------

If you go to $:/AdvancedSearch tiddler and you search for the term 
AdvancedSearch 
with the "shadow" tab selected you'll get the following results: 

$:/AdvancedSearch 
$:/core/ui/Buttons/advanced-search 
$:/core/ui/ControlPanel/Basics 
$:/core/ui/SideBarLists

All those tiddlers are part of the advanced search functionality or call 
the button. If you open those tiddlers, you'll see, how vanilla TW builds 
the Advanced Search functionality. ... So it depends on you, if your "TW 
app framework" should contain this functionality or not. .. Be aware, that 
in the content there may be transclusions and <$:/list...>s, that may or 
may not be removable too. 

The existing TW UI is mainly built with <$:/list...> widget functionality 
to make it more dynamic. ... The very first versions of the PageTemplate 
used hard coded elements for most of the UI sections. ... So looking at the 
*alpha* and *bata versions*, the templates may be much simpler, but less 
powerful. ... eg: no multi language support. no dynamic page elements 
activated by tags ... and so on. 

That's great if you want to tweak the default app (which is pretty cool and 
> all), but a nightmare if you want to actually use TW as an application 
> framework, not just create a minor derivation of the default app.
>

IMO You can basically strip everything. Just keep:

 - all *.js tiddlers, since they provide the executable core. 
 - $:/core/ui/PageTemplate

So imo the minimum Page template is: 

Hello World

which will be completely useless because it removes the whole "vanilla TW" 
functionality. .... BUT imo it's the *bare minimum core*. ... 

I didn't test it, but I definitely will create a stripped down version, 
since I'm interested, if a TW like this will start and display "Hello 
World" :) ... This version will be completely useless, so don't expect it, 
to be published. 

If you start studying the content starting from $:/core/ui/PageTemplate and 
if you understand every single bit of its content, you can work your way 
up, to understand the whole TiddlyWiki UI functionality. 

The TWs UI is built with widgets <http://tiddlywiki.com/#Widgets>, which 
are the basic building blocks of functionality in TiddlyWiki. If you 
analyse the PageTemplate, and consult the tiddlywiki.com homepage, which 
describes every widget in detail, you can find and see every piece that 
builds "vanilla TW". .... 

*Low Level Warning!*
This journey is non trivial (and sometimes frustrating), since the existing 
TW UI is not only an application, it is also Jeremy's philosophy, how 
tiddlers should be presented. At least one version of it. So your philosophy 
how your application should look like may be completely different. So as I 
understand your post. You want to start from scratch. If you really want to 
do this, some hints, where I would start are following. ..

eg:  If you "advanced search" for:  PageTemplate you'll get the following 
results: 

$:/core/modules/startup/render.js    <- look at this one: 
https://github.com/Jermolene/TiddlyWiki5/blob/master/core/modules/startup/startup.js
 
$:/core/templates/static.template.html 
$:/core/ui/PageTemplate              <- start here 
$:/core/ui/PageTemplate/alerts 
$:/core/ui/PageTemplate/pagecontrols 
$:/core/ui/PageTemplate/pluginreloadwarning 
$:/core/ui/PageTemplate/sidebar 
$:/core/ui/PageTemplate/story 
$:/core/ui/PageTemplate/topleftbar 
$:/core/ui/PageTemplate/toprightbar 
$:/tags/PageTemplate

You can see the basic structure of the TW UI here. So if you understand, 
how Jeremy built TW UI, you will be able to build your own UI. 

TW basically has:

 - page controls
 - a sidebar
 - the tiddler "story river" ... which is part of the philosophy. 
 - top left/right menu bars, that are always visible
 - some plugin handling and alert stuff.

Your own PageTemplate may be completely different but it needs to work with 
the same widgets. 

------------
More details: 

You can see, that there are some elements hard coded in the render.js file. 
The following list may be incomplete!:

// Default story and history lists
var PAGE_TITLE_TITLE = "$:/core/wiki/title";
var PAGE_STYLESHEET_TITLE = "$:/core/ui/PageStylesheet";
var PAGE_TEMPLATE_TITLE = "$:/core/ui/PageTemplate";

// Time (in ms) that we defer refreshing changes to draft tiddlers
var DRAFT_TIDDLER_TIMEOUT_TITLE = "$:/config/Drafts/TypingTimeout";

So you need to have a closer look at render.js, to find those tiddlers, 
that imo are absolutely necessary. 

--------------

If you made it so far, I'm pretty sure, that all of this looks pretty 
complicated, if you are new to TW tweaking. ... But it actually isn't. It's 
just a lot of work, that was invested to create the TW UI and there's not 
enough documentation, that describes, how the "reference implementation" 
aka vanilla TiddlyWiki is built in detail. 

So if someone would sit down and describe how the content of every single 
core tiddler (1218) works, we would have the "low level doc" for the actual 
TW UI and its "may be" reusable blocks. .. BUT ...

Since we, the TiddlyWiki Community, are not able to fund Erics "Inside 
TidddlyWiki" documentation, which is a "TiddlyWiki User Manual", I doubt we 
will be able to fund the low level docs, that would be needed to create: 
"TiddlyWik the App Framework" documentation. So for the time being, this 
knowledge will be beautifully hidden in some heads, but not written down in 
a consumable way. 

have fun!
mario

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To post to this group, send email to tiddlywiki@googlegroups.com.
Visit this group at http://groups.google.com/group/tiddlywiki.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/427f1ab4-fae5-49fa-a4c7-0c5d1e36ad3d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to