[IMP] Lua script - copy images and create their link to be displayed in
homepage
This commit is contained in:
parent
807f6e3238
commit
f7a8e5d70e
@ -3,7 +3,7 @@
|
|||||||
<span class="element">
|
<span class="element">
|
||||||
${ELEMENT_TITLE} <br />
|
${ELEMENT_TITLE} <br />
|
||||||
|
|
||||||
<img src="${IMG_URL}" alt="${IMG_DESC}" title="${IMG_TITLE}" />
|
<img src="${IMG_URL}" alt="${IMG_DESC}" title="${ELEMENT_DESC}" />
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
57
porteail.lua
57
porteail.lua
@ -15,6 +15,8 @@ local currentpath = os.getenv('CURDIR') or '.'
|
|||||||
local default_dir_category = 'categ'
|
local default_dir_category = 'categ'
|
||||||
local default_dir_component = 'composants'
|
local default_dir_component = 'composants'
|
||||||
local default_dir_destination = 'porteail'
|
local default_dir_destination = 'porteail'
|
||||||
|
local default_dir_img_destination = 'image'
|
||||||
|
local default_dir_img_source = 'img'
|
||||||
-- Default files values
|
-- Default files values
|
||||||
local default_img_filename = 'generique.png'
|
local default_img_filename = 'generique.png'
|
||||||
local default_index_filename = 'index.html'
|
local default_index_filename = 'index.html'
|
||||||
@ -80,9 +82,30 @@ function basename (string, suffix)
|
|||||||
return basename
|
return basename
|
||||||
end
|
end
|
||||||
|
|
||||||
function process(filepath, template_categ, template_element)
|
function processImage(image, source, img_destination, destination, default_img)
|
||||||
|
-- if no image given, use default one
|
||||||
|
if not image or image == nil or image == '' then
|
||||||
|
image = default_img
|
||||||
|
end
|
||||||
|
-- create image weblink
|
||||||
|
result = img_destination .. '/' .. basename(image)
|
||||||
|
-- check if this image exists
|
||||||
|
attr = lfs.attributes(destination .. '/' .. result)
|
||||||
|
if not attr then
|
||||||
|
img_path = source .. '/' .. image
|
||||||
|
f = assert(io.open(img_path, 'rb'))
|
||||||
|
img_src = assert(f:read('*a'))
|
||||||
|
assert(f:close())
|
||||||
|
img_dest = assert(io.open(destination .. '/' .. result, 'wb'))
|
||||||
|
assert(img_dest:write(img_src))
|
||||||
|
assert(img_dest:close())
|
||||||
|
end
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
|
||||||
|
function process(filepath, template_categ, template_element, img_destination, destination, img_source, default_img)
|
||||||
-- parse given file
|
-- parse given file
|
||||||
result = template_categ
|
local categ_page = ''
|
||||||
local elements = {}
|
local elements = {}
|
||||||
for line in io.lines(filepath) do
|
for line in io.lines(filepath) do
|
||||||
local element = ''
|
local element = ''
|
||||||
@ -97,7 +120,7 @@ function process(filepath, template_categ, template_element)
|
|||||||
for t in string.gmatch(line, '%[%[(.*)%]%].*') do title = title .. t end
|
for t in string.gmatch(line, '%[%[(.*)%]%].*') do title = title .. t end
|
||||||
description =''
|
description =''
|
||||||
for d in string.gmatch(line, '%[%[.*%]%](.*)') do description = description .. d end
|
for d in string.gmatch(line, '%[%[.*%]%](.*)') do description = description .. d end
|
||||||
result = replace(result, {CATEG_TITLE=title, CATEG_DESC=description})
|
categ_page = replace(template_categ, {CATEG_TITLE=title, CATEG_DESC=description})
|
||||||
elseif is_element then
|
elseif is_element then
|
||||||
title = ''
|
title = ''
|
||||||
description = ''
|
description = ''
|
||||||
@ -107,9 +130,10 @@ function process(filepath, template_categ, template_element)
|
|||||||
for d in string.gmatch(line, '.*##.*##(.*)##.*') do description = description .. d end
|
for d in string.gmatch(line, '.*##.*##(.*)##.*') do description = description .. d end
|
||||||
for u in string.gmatch(line, '.*##(.*)##.*##.*') do url = url .. u end
|
for u in string.gmatch(line, '.*##(.*)##.*##.*') do url = url .. u end
|
||||||
for i in string.gmatch(line, '.*##.*##.*##(.*)') do img = img .. i end
|
for i in string.gmatch(line, '.*##.*##.*##(.*)') do img = img .. i end
|
||||||
-- FIXME: do img process to have url, copy it and have a description
|
img_description = " "
|
||||||
img_title = basename(img)
|
img_url = processImage(img, img_source, img_destination, destination, default_img)
|
||||||
element = replace(template_element, {ELEMENT_URL=url, ELEMENT_DESC=description, ELEMENT_TITLE=title, IMG_TITLE=img_title})
|
url = url:gsub('%&', '%&')
|
||||||
|
element = replace(template_element, {ELEMENT_URL=url, ELEMENT_DESC=description, ELEMENT_TITLE=title, IMG_URL=img_url, IMG_DESC=img_description})
|
||||||
table.insert(elements, element)
|
table.insert(elements, element)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -117,7 +141,7 @@ function process(filepath, template_categ, template_element)
|
|||||||
for k, v in pairs(elements) do
|
for k, v in pairs(elements) do
|
||||||
text_elements = text_elements .. v
|
text_elements = text_elements .. v
|
||||||
end
|
end
|
||||||
result = replace(result, {ELEMENTS=text_elements})
|
local result = replace(categ_page, {ELEMENTS=text_elements})
|
||||||
return result
|
return result
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -130,11 +154,14 @@ config = getConfig(configFile)
|
|||||||
categ = config['CATEGORIES'] or default_dir_category
|
categ = config['CATEGORIES'] or default_dir_category
|
||||||
component = config['COMPOSANTS'] or default_dir_component
|
component = config['COMPOSANTS'] or default_dir_component
|
||||||
destination = config['CIBLE'] or default_dir_destination
|
destination = config['CIBLE'] or default_dir_destination
|
||||||
|
img_destination = config['CIBLE_IMAGE'] or default_dir_img_destination
|
||||||
|
img_source = config['IMAGES'] or default_dir_img_source
|
||||||
-- create values for files
|
-- create values for files
|
||||||
index_filename = config['INDEX'] or default_index_filename
|
index_filename = config['INDEX'] or default_index_filename
|
||||||
main_template = config['TEMPLATE_INDEX'] or default_template_index_filename
|
main_template = config['TEMPLATE_INDEX'] or default_template_index_filename
|
||||||
template_categ_filename = config['TEMPLATE_CATEG'] or default_template_categ_filename
|
template_categ_filename = config['TEMPLATE_CATEG'] or default_template_categ_filename
|
||||||
template_element_filename = config['TEMPLATE_ELEMENT'] or default_template_element_filename
|
template_element_filename = config['TEMPLATE_ELEMENT'] or default_template_element_filename
|
||||||
|
default_img = config['DEFAUT_IMG'] or default_img_filename
|
||||||
-- other default values
|
-- other default values
|
||||||
categ_extension = config['CATEGORIES_EXT'] or default_categ_extension
|
categ_extension = config['CATEGORIES_EXT'] or default_categ_extension
|
||||||
|
|
||||||
@ -152,6 +179,15 @@ assert(template_element_file:close())
|
|||||||
local introduction = ''
|
local introduction = ''
|
||||||
local menu = ''
|
local menu = ''
|
||||||
|
|
||||||
|
-- Check if public directory exists
|
||||||
|
if lfs.attributes(destination) == nil then
|
||||||
|
assert(lfs.mkdir(destination))
|
||||||
|
end
|
||||||
|
-- Check if image directory exists
|
||||||
|
if lfs.attributes(destination .. '/' .. img_destination) == nil then
|
||||||
|
assert(lfs.mkdir(destination .. '/' .. img_destination))
|
||||||
|
end
|
||||||
|
|
||||||
-- Browse categ directory
|
-- Browse categ directory
|
||||||
local categories_files = listing (currentpath .. '/' .. categ, categ_extension)
|
local categories_files = listing (currentpath .. '/' .. categ, categ_extension)
|
||||||
local content = ''
|
local content = ''
|
||||||
@ -160,18 +196,13 @@ if categories_files then
|
|||||||
-- read category content
|
-- read category content
|
||||||
attr = lfs.attributes(v)
|
attr = lfs.attributes(v)
|
||||||
if attr and attr.mode == 'file' then
|
if attr and attr.mode == 'file' then
|
||||||
content = content .. process(v, template_categ, template_element)
|
content = content .. process(v, template_categ, template_element, img_destination, destination, img_source, default_img)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
print ("-- No category file found!")
|
print ("-- No category file found!")
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Check if public directory exists
|
|
||||||
if lfs.attributes(destination) == nil then
|
|
||||||
assert(lfs.mkdir(destination))
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Create index file in destination directory
|
-- Create index file in destination directory
|
||||||
result = assert(io.open(destination .. '/' .. main_template, 'wb'))
|
result = assert(io.open(destination .. '/' .. main_template, 'wb'))
|
||||||
-- create substitution table
|
-- create substitution table
|
||||||
|
Loading…
Reference in New Issue
Block a user