Since 2.2.1-pl, modResource has a new properties field that proposed to store json format data.
- Tracker:
http://tracker.modx.com/issues/6651
- Github:
https://github.com/modxcms/revolution/commit/111e54674fcd63d07d3fa61f29e7ef54059f3364
By chance, Media Source also use json to list files and folder. For example when OnMediaSourceGetProperties event system fired, it send $properties variable in following format:
{"basePath":{"name":"basePath","desc":"prop_file.basePath_desc","type":"textfield","options":"","value":"","lexicon":"core:source"},"basePathRelative":{"name":"basePathRelative","desc":"prop_file.basePathRelative_desc","type":"combo-boolean","options":"","value":true,"lexicon":"core:source"},"baseUrl":{"name":"baseUrl","desc":"prop_file.baseUrl_desc","type":"textfield","options":"","value":"","lexicon":"core:source"},"baseUrlRelative":{"name":"baseUrlRelative","desc":"prop_file.baseUrlRelative_desc","type":"combo-boolean","options":"","value":true,"lexicon":"core:source"},"allowedFileTypes":{"name":"allowedFileTypes","desc":"prop_file.allowedFileTypes_desc","type":"textfield","options":"","value":"","lexicon":"core:source"},"imageExtensions":{"name":"imageExtensions","desc":"prop_file.imageExtensions_desc","type":"textfield","value":"jpg,jpeg,png,gif","lexicon":"core:source"},"thumbnailType":{"name":"thumbnailType","desc":"prop_file.thumbnailType_desc","type":"list","options":[{"name":"PNG","value":"png"},{"name":"JPG","value":"jpg"},{"name":"GIF","value":"gif"}],"value":"png","lexicon":"core:source"},"thumbnailQuality":{"name":"thumbnailQuality","desc":"prop_s3.thumbnailQuality_desc","type":"textfield","options":"","value":90,"lexicon":"core:source"},"skipFiles":{"name":"skipFiles","desc":"prop_file.skipFiles_desc","type":"textfield","options":"","value":".svn,.git,_notes,nbproject,.idea,.DS_Store","lexicon":"core:source"}}
So why not copying modMediaSource properties to modResource properties? Here the hacking step:
Backend Manager
- check if/else: modStaticResource
- modMediaSource fired:
- if resource properties not empty: set default media-source properties
- if media source changed: get media-source properties
- modStaticResource saved:
- resource content (static resource) = file
- resource properties = media-source properties (in JSON format)
- save!
Frontend Client
- check if/else: modStaticResource
- get resource properties if any
- if basePath not empty && basePathRelative is true: file = modxpath/basePath/file
- elseif basePath not empty && basePathRelative is false: file = basePath/file
- else: file = modxpath/file
- get the file
So I think it's should be more easier to modify the core code rather than creating a new addon/plugin. Is it right Jason (Opengeek)?
[ed. note: lokamaya last edited this post 11 years, 6 months ago.]