kolber / stacey Goto Github PK
View Code? Open in Web Editor NEWCheap & easy content management
Home Page: http://staceyapp.com
License: MIT License
Cheap & easy content management
Home Page: http://staceyapp.com
License: MIT License
Anyone have any idea why my top level URLs are requiring the ?/
in between the domain and page, while my subdirectory articles work just fine without it? For instance, domain/articles
does not work while domain/?/articles
does work, and yet domain/aritcles/articletitle
works just fine? I can't yet see anything in .htaccess
that could be causing this.
On two Stacey site I have the followin problem: After a while, and with no changes on my site the cache for one or more pages is corrupted. All paths which should be prefaced by "../" are now only prefaced by "./". All refereced css/js/links are then 404's
Hi all,
I have created my own site with Stacey 3.0, and found that .png IPTC metadata is not being parsed by Stacey.
I downloaded and ran a fresh version of Stacey, and the issue also occurs there. I am using Adobe Bridge CS6.
I think line 31 of app/asset-types/image.inc.php is the issue.
$img_data = getimagesize($file_path, $info);
I think the php function getimagesize(), can only get info from .jpg images (http://php.net/manual/en/function.getimagesize.php). Does anyone know a way to get around this? It would be a great feature for users who like to use iptc metadata to title and caption their images.
My content directory has the following structure -
I have created templates for my header
and footer
.
The templates are located under templates/partials/includes/
.
The footer
loads a script file which is located here - public/library/js/scripts.js
.
Inside of scripts.js
, I have these a line of code that do not load when I am accessing speakers/<anything>
.
$(document).ready(function() {
Modernizr.load('../library/js/libs/prefixfree.min.js');
});
I couldn't find a way to list a defined number of elements rather than the whole thing. Like:
{% for page in page.children[0,3] | reverse %}
Or something like that.
There may be a solution to this somewhere, but is there or could there be a way to output the complete url path (including site name) to for example a thumb.jpg or any page with a @variable.
I am trying to use a @thumb in a meta tag for Facebook Open Graph, and cannot seem to find a combination of @variables that will give a complete link to the thumb. This also goes for the og:url property.
Example:
The problem seems to be that all the @variables output links that are within the website.
I would not want to hard code this.
Can anybody help with this?
Thanks
The issue at hand is that a template with a reference to a partial as the first thing will render the partial not being included.
<a href="/">link me!</a>
:partial
<p>Random gibberish.</p>
<a href="/">link me!</a>
<p>Random gibberish!</p>
:partial
<p>Random gibberish!</p>
have you considered having a themes folder containing multiple themes, instead of only a templates folder i.e.
/themes/stacey-default-theme
/themes/my-custom-theme
/themes/another-custom-theme
simply because, currently if I'd like to develop a different theme for a site I need to first make a copy of the site and then replace the templates folder..
does this make sense?
i could imagine setting the current theme in the _shared.txt or something..
if the folder containing the app has a "." in it's name the @root_path outputs only one dot as well. So, ../public will turn into ./public
Is there a way to hide a page so that it is only accessible through Twig collections, and not by URL? Basically, the inverse of omitting a number from the front of the folder (accessible through URL but not Twig). I would like to utilize the directory structure to organize a large collection of items, but only want to present them as a category, not individually.
I may be mistaken but is it possible that this change may have caused caching to no longer work for JSON files?
Specifically the cache IS correctly written for JSON files but the lack of identifying comment containing the md5 within the cache file causes it never to be retrieved from the cache, causing all non-403d JSON requests to be re-rendered fully (which in my case is very slow because I am generating a list of all images across the site)
I suspect that this is the culprit (line 57 of cache.inc.php)
function get_current_hash() {
preg_match('/Stacey.*: (.+?)\s/', file_get_contents($this->cachefile), $matches);
return isset($matches[1]) ? $matches[1] : false;
}
If I remove 'json' from the $no_comment_types array, caching for JSON files resumes as normal, but of course the produced JSON is invalid because of the comments at the end.
I can't think of an easy fix considering the current caching mechanism appears to rely on the md5 being matched against within the comment at the end of each cached file.
Ideas?
This happened to me in Stacey 2.3.0
If there is no cache file for a stacey generated 404 page and you try to access a page that does not exist, you get a php error which gets cached and served even if you visit the 404 page directly.
Warning: file_get_contents(./templates/.) [function.file-get-contents]: failed to open stream: Permission denied in app\asset-types\page.inc.php on line 34
Obviously PHP error reporting needs to be on to see this in action.
templates
content
with a .txt
file pointing to the 404 template.htacces
ErrorDocument
directive to say ErrorDocument 404 /404
app/_cache
(except .gitignore)http://base_url/some_page_that_does_not_exist
to see it errorhttp://base_url/404
to see the cached errorapp/_cache
(except .gitignore)http://base_url/404
to see the 404 pagehttp://base_url/some_page_that_does_not_exist
to see the cached 404 page... after using 2.3 pretty regularly. Running locally on mac / apache. Home page loads fine, but trying to browse to any project sends this error:
Not Found
The requested URL /Users/G/Sites/sandshed/stacey3/index.php was not found on this server.
Wherever i click it's looking for (and failing to find) index.php .
I have had problems with the same bug in the past, and used other workarounds (see here). However, I found out that the asset data defined in the content text file (e.g. image description) failed to load, sometimes depending on the folder level (same file worked under 'content/' but not under 'content/some-other-folder'). Therefore, I thought of replacing the following lines 14-16 of asset-factory.inc.php:
# return any page data scoped against the asset filename
$page_data = self::$store[$page_path];
return isset($page_data[$file_name]) ? $page_data[$file_name] : false;
with the following:
# return any page data scoped against the asset filename
$page_data = self::get($page_path);
return isset($page_data[$file_name]) ? $page_data[$file_name] : false;
see my fork: http://github.com/aegagros/stacey
How hard would it be to create sub-content pages? A third level of content pages. For example...
Home > About > Education
Any plans to add that sort of functionality?
That's what we want.
So, I was getting pretty stoked about the 3.x features, Twig and everything, but the switch to YML files breaks my favorite part about the markdown workflow:
with the more complicated syntax (indenting all lines of markdown content by two spaces), standalone markdown editors (Mou, Byword, Marked, etc.) don't understand it correctly, and the native previewing in those apps doesn't work anymore.
Therefore my question, is if (and how) there is any chance that either:
.md
markdown files from the .yml
file, allowing the possibility to write content in a native markdown formatThoughts?
There was a shortcut taken when integrating Twig. In Twig/Template.php function getAttribute, two lines of code were added to return the Stacey Page object for a string attribute corresponding to a path, using AssetFactory::get. This has to be added back when upgrading Twig. (took me a while to figure out).
The best approach would be to either build the whole graph of Page objects in the page data instead of just adding the page paths in the children array but for now, I added a Twig extension to my install to retrieve the Page object from the template.
Hi,
I've just discovered Stacey and I find it really interesting but after playing with an older version (with txt files) I've discovered this git repository and it seems that I've an issue with line endings or HTML elements in my yml files ; for example the content above give me that message
An exception has been thrown during the rendering of a template ("Unable to parse file "./content/5.web/2.gmap/1.gmap2/2.poly-kml/gmap2.yml": Unable to parse line 3
If I put the content on a single line there is no problem anymore but you have to admit that it's far from easy to read your code anymore... :/
Maybe an issue with my saving parameters (I'm using Sublime Text, I save in UTF-8) ?
title: 3.3 Encoded polylines and polygons content: | <p>Lorsque l'on a des fichiers KML extrêmement lourds, le traitement et l'affichage peut s'avérer lent, comme lorsque l'on souhaite afficher des tracés complexes et très précis donc avec de très nombreux points (par exemple, les frontières du Limousin). L'une des solutions consiste à réduire le nombre de points, grâce à l'algorithme de Douglas et à utiliser des <em>polygons</em> ou <em>polylines</em> cryptés. Pour obtenir un polygone cryptés tout en réduisant sa précision à partir d'un fichier KML, nous utilisons <a href="http://facstaff.unca.edu/mcmcclur/googlemaps/encodepolyline/encodeForm.html" target="_blank">cet outil en ligne</a>.</p> <p>Nous n'allons pas ici placer le code correspondant à l'exemple dans la mesure où il suffit de créer une carte et d'ajouter le code fourni par le programme. Attention toutefois à ne pas préciser, lors de la création de la carte, les coordonnées pour centrer celle-ci ainsi que le niveau de zoom par défaut dans la mesure où ils sont calculés par la suite dans le code obtenu et ce de telle sorte que la forme soit entièrement visible.</p> <div id="map9" style="height: 400px;"></div>
Thanks for your answers and for the work on stacey.
PS : Sorry if my english is not very clear :/
Consider allowing the definition of a template with the contents of an item. Allow us to define a template directly within the confines of a folder with .yml file.
so content/about/
1.) mytemplate.yml
2.) mytemplate.html
I really need support for this because each of my pages have a unique design and therefore need there own template. Defining tons of custom templates in the template folder isn't an option.
Hello,
(I'm kinda new to github. also I'm a graphic designer, so dev is not my forte)
I've toyed a bit with Stacey last month, and discovered recently the version 3, with support for TWIG and such. I haven't looked at it in details yet, but I'd be interested to know if there's the possibility to build a multi-language website with Stacey...
Ideally it would mean having a project at example.com/en/project/example
but at the same time, the same images would be used for other languages
I guess it would mean 3 different YML for each folder, like en.project.yml, fr.projet.yml and de.projekt.yml each being called by a different template...
Do you think such a thing could be possible? If it's not doable right away, would you consider that an hypothetical feature in the future?
Thank you :)
Stacey v2.3 released 1 years a go.
I see stacey updated to v3.
what is v3 release date ?
what exactly change logs ? or diff ro v2.3
and can i us it now ?
is it staible ?
Just started a new stacey test site with ver 3.0 - already running 2.3 with no problems.
But starting, I'm getting following error:
Warning: Invalid argument supplied for foreach() in /EmI2/app/cache.inc.php on line 36
Fatal error: Class 'Twig_Extension' not found in /EmI2/app/parsers/Twig/Extension/Core.php on line 16
I'm having a strange problem with the language:
if !@thumb do
Is not working properly
I want to test if projects have @thumbs; and if they do, show them, if they don't, generate them from the first image in the project (using a thumber.php script.)
if @thumb do
stuff...
endif
if !@thumb do
other stuff...
endif
The "if @thumb do" works fine, as expected.
The ! block fails to parse when there is a thumb present: stacey outputs
if !./content/01.projects/01.My-Project/thumb.jpg do
into the HTML stream. On pages where there is no thumb present, the ! operator works fine.
original snippet:
if !@thumb do
<div class="projectThumbnail">
<a href="@url" class="projectThumbnailLink">
foreach $images[:1] do
<img src="thumber.php?img=@url&w=220" alt="" >
endforeach
</a>
</div>
endif
I tried creating my own filter by an twig-extension, which turned -> not to work.
Is there any example in the wild offering a functioning twig-extension running in stacey3.x?
just for the records: Here's a Base64-function incorporated into a twig-ext, which i'd like to fork and use in stacey3.x
https://github.com/cryptocompress/DataUrlTwigExtension/blob/master/CryptoCompress/TwigBundle/Extension/DataUrlTwigExtension.php
I helped my self editing the core now, but this is an ugly hack.
I've stumbled upon some php files in the /app folder that seem to have CRLF line endings and my git repo keeps telling me that it's wrong. But we can deal with it: https://help.github.com/articles/dealing-with-line-endings
I think we could add .gitattribute to the repo.
Any content folder that is under the root directory does not work properly since the root_path is not defined correctly.
Suppose the following structure:
content/01.FolderA/01.SubFolderX/
content/01.FolderA/02.SubFolderY/
content/02.FolderB
Only the content in the "01.FolderA/" subfolders will work properly, the content directly in "02.FolderB" will not render correctly as the page is not properly initialized. This has the effect that /sitemap.xml or feed.xm, etc. does not work (only through /?/sitemap, etc.) or any kind of "templated" content.
I investigated and in stacey.inc.php, function __construct($get), at line 128, there is the following code:
if (!preg_match('///', $key)) $key = false;
At this point, it is certain that the path will not contain any slashes as the directory is directly under the root and the URI will be "/02.FolderB" (using the above example) and leading and trailing slashes have been removed previously. Thus, $key = "02.FolderB" and line 128 will essentially set $key to false and the page will not be initialized correctly. There is the intention to set $key to index below but this does not work as isset(
I don't have the big picture and there must be a reason for that line. But, for now, I have commented line 128 on my install as it fixes my problems and does not create adverse effects for me. I have seen similar issues on github that could be related.
if I run the following i get the error below.
{
"data": [
foreach $parent do
foreach $children do
foreach $children do
{"name": "@page_name"},
endforeach
endforeach
endforeach
]
}
will result in breaking the json output with the following error:
http://pastie.textmate.org/private/lkpnnvbyqmxvfi71kf6lkq
(it's a bit verbose)..
the json this will output validates fine tho
let me know if you need more details on this.
Let's say I have two pages in my collection:
work/
/project-2/ => 2.project-2
/project-1/ => 1.project-1
If I'm on /project-2/, $previous_sibling will return project-1, even though it's the first page in the collection.
Is there anyway to list the $previous_sibling only if it's not the first page (@is_first) in the collection?
Hi Anthony,
I've been playing with Stacey for about a year now and I have this fork of mine https://github.com/kvakes/boilerplatypus where I added H5BP template. My fork is highly customized to suit my needs, but I would love to share my findings on how to use Stacey in a more productive way. Since the other 2 Stacey templates are abandoned, it will be better to have a decent main template. So, I want to request a pull that will contain:
What you think about it? Is this a good thing to do? It's a great body of work, and a lot of tiny desicions about this and that, can we discuss it here?
In Stacey 3 / twig you have the {{ path }} variable you can use for linking in the current folder.
But it's a relative one. (../../pathtomyimage)
Do you plan to introduce a variable with absolute path for linking (like with base_url, permalink ...) ? It'll be useful for rss content for images to appear in rss aggregator.
Do you plan a variable usage in editing feature like in stacey 2: define variables or use page variables inside content section ?
Thanks !
I will migrate the current documentation you have on http://staceyapp.com/ and format it here on the Wiki. Just let me know any correction you wanna make.
Cheers,
@rnmp
Add the ability to switch template for mobile and tablets.
I integrated the Mobile_Detect.php module to my copy of stacey to switch template and have conditions based on the browser. It would be a nice addition to the CMS.
As soon as I remove it from here, it serves.
Must be an overzealous regex somewhere?
Hi, i just came across this cool little php script called OneFileCMS, and thought that maybe someone would see a use for it in combination with Stacey (or even better develop some sort of plugin or extension for Stacey 3).
https://github.com/Self-Evident/OneFileCMS
http://onefilecms.com/
Basically it lets you browse and create folders, files, upload images(even on iOS) or delete them through your browser. It also has a simple text editor field, so that if you want to create and write Markdown directly into txt files created on for example a touch device.
I have often thought that it would be nice to be able to edit Stacey content on a mobile device, and this little plugin lets you do just that. You could use it as a blog etc, as it lets you upload images from your mobile photos/camera roll.
To install:
I have done a test where i have placed the onefilecms.php in the root folder together with the stacey folder. After that simply access the "backend" by entering:
www.yourdomain.com/onefilecms.php
Then enter "username" and "password" and thats it.
You can of course change the user/password in the admin page.
The styling in the script is not that ideal for me, but i am tinkering around with it to make it more friendly for my mobile.
Hope this can be useful for others, and if someone has any other similar ideas/suggestions that are better please share.
Hi Anthony,
I've noticed that there are three other branches that are pretty much not used anymore. When people clone your repo they also clone those branches. I think they all are merged to master now, so it's a good idea to delete them not only from your local repo, but from github too.
git branch -d yaml
git push origin :yaml
The first line deletes your local branch, the second deletes 'yaml' branch from github.
A) I'm on your side.
B) A good concept--e.g., Stacey--should stand or fall on it's own merits.
C) IMHO the video that plays in the download demo, "Game Boy Game Girl..." distracts and detracts from the otherwise good concept and execution of Stacy itself.
Does it provide any additional clarification, insight, help or other support having to do with your "product" (Stacey)? (Nope.)
Does it build your brand? (Nope.)
Does it support or promote other work(s) related to advancing your immediate/other interests? (Maybe; it depends on your point of view.)
Does it amuse your friends and show you to be a way-cool dude? (yeah, sure--but there's a time and place for everything, and IMHO this just ain't it).
So, that "Friendly PR (Public Relations) advice" -- Pick something else. Something more useful and applicable to your goals with this project. I think it will better help your cause.
Yet, I know people are certainly allowed to have views other than mine--I'm okay with that. It's just a little sad when they intermingle something so far off-topic and of questionable taste that it works against them. E.g., the whole "Mother Effin'..." labeling of otherwise great "products" (I use the term "products" loosely) by my revered heroes Paul Irish and friends. Gratuitous bluster like that takes attention away from what's really important. Think: The genuinely big dogs don't have to bark. It's the chihuahuas that make the most noise. Unfortunately I couldn't convince Paul of that either.
Peace & Love, bro.
Respectfully yours,
/a friend
In brief, '---' (three hyphens) does not convert to '—' in the content in a content.yml file.
I would assume that this was a problem with the markdown parser with the exception that I am using the same exact parser (copied code) on another project (Wordpress) and do not get the same result. Perhaps this is a conflict because of the '---' delimiter in YAML? Can an exception to it be made for markdown content?
if i switch output to json i constantly get an error:
Notice: Undefined offset: 1 in *cache.inc.php on line 59
Call Stack
../index.php:
Stacey->__construct( )
Stacey->create_page( )
Stacey->render( )
Cache->expired( )
Cache->get_current_hash( )
Some of my lower level directories return the main index page when called rather than the proper content. Instead of the proper content being displayed when a link is clicked the main index content is displayed. This does not happen with all directories but only some directories. The problem appears to have started when my hosting provider upgraded the server PHP version to 5.3.2
I now have three identical Stacey V 3.0 sites running on three servers. My local server with PHP 5.3.15, Remote server1 with PHP 5.3.13 and remote server2 with PHP 5.3.2
Remote server2 is the only one that is not working properly.
Any ideas much appreciated.
Thanks,
Paul
Or is that completely incompatible with twig / stacey 3?
It was very useful to be able to include php in partials in stacey 2.
Let's say I have...
foreach $images do
<article title="photo: @title">
<figure>
<img src="@small" if @title do alt="@title" endif />
if @variable do @variable endif
if @title do @variable endif
@variable
</figure>
if @description do <p>@description</p> endif
</article>
endforeach
... where @variable is "success!" and @title is "expected success!".
foreach $images do
<article title="photo: @title">
<figure>
<img src="@small" if @title do alt="@title" endif />
<!--- missing @variable here -->
success!
success!
</figure>
if @description do <p>@description</p> endif
</article>
endforeach
The expected behavior would in my opinion be that the @variable
can be checked and returned to true
, not false
- even though it does have content.
The snippet above is its own partial, referenced from within a get.
I haven't been able to install Stacey on most servers out there. I was only using it locally.
I set the permissions as the installation says.
Commit: e68cdcc
Let me ask if we can hope more - Stacey or shared - variables will be available in yml files ?
Generally is it good or bad idea to let Twig templating language use in yml files and be parse like markdown ?
It will be very convenient for example to use resize_path with SLIR for images.
Thx !
When Stacey is not configured with clean URLs, there is a problem with Encoded Slashes.
When trying to post a link to a stacey site on Facebook, forward slashes after the ?
are encoded with %2F
– which are not properly handled. i.e. http://maribastashevski.com/?%2Fworks%2Fprivileged-confidential%2F
(instead of http://maribastashevski.com/?/works/privileged-confidential/
)
(Yes, this is Facebook's fault, but Zuck's not answering my emails, so…)
The proper solution would be to configure .htaccess
with AllowEncodedSlashes on
, but some hosting services (mine in any case) may not allow this.
Assuming enabling clean URLs isn't an option in this case, is there a way to modify how Stacey handles requests so as to deal with Encoded Slashes properly?
Using YAML opens up a world of possibilities and the way in which standard key:values are handled like Title and Date clean up nicely from how they were handled in version 2x.
However, the YAML requirement to have all block content continuously proceeded by a two space indentation is rather troublesome.
I manage content through a text-editor (IA Writer), which is where I draft, write, and save my files. The way in which I manage my content makes it very easy to compose, and then publish, and I can stay in "writer" mode and out of "developer" mode.
Following this convention, means I now need to compose, then go through and indent all paragraphs by two spaces, (which is a mess for editing since paragraph indentations are a print habit and not a digital one. This also poses an issue for sites with an ample amount of content coming from 2x.
On the surface, it seems like a small thing, but in use it causes the content creation and management process to become clunky. An extra step is now added, where I am either going through and "preparing" my content after composing, or I have to indent my paragraphs as I compose (which is rather unconventional).
The point I'm getting at really, is before I could just write my content in any text editor, and all I had to worry about were key value separators, which made things as easy or easier than a form based CMS.
Now I have to modify my content from its intended format before it will work. Adding indentation is clunky and troublesome for the use-case here. It's a step that even most CMSs don't require me to do with form based editing systems. I write my content, I paragraph break, I save, boom, no having to prep the content by indenting it a certain amount.
My suggestion would be to modify this default behavior to allow the content to work without the constant indentation, or rethink this approach entirely.
I'm not saying to scrap YAML right off the bat, but the biggest failure of YAML, is that YAML needs a way to accept literal blocks that have nothing to do with any indentation. This utterly destroys the ease of use and simplicity Stacey has been built upon thus far.
User input after the key and one newline should be preserved exactly, there should be no worrying about proper indentation.
The goal of Stacey seems to be a simple, non-db CMS. The most important goal of that is making managing the content user friendly and intuitive or else it fails at being a CMS. Forcing the YAML convention on the content creation process conflicts with that goal.
The currently returned JSON isn't clean enough to actually work with. for example, jQuery ajax method won't even deal with it. on the other hand, having conditional statements in the JSON template adds whitespace which generally bad when dealing with JSON.
would you consider adding this:
https://github.com/getify/JSON.minify
s
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.