-- update package content_template to add package_id parameter create or replace package content_template as c_root_folder_id constant integer := -200; function get_root_folder return cr_folders.folder_id%TYPE; function new ( --/** Creates a new content template which can be used to render content items. -- @author Karl Goldstein -- @param name The name for the template, must be a valid UNIX-like filename. -- If a template with this name already exists under the specified -- parent item, an error is thrown -- @param text The body of the .adp template itself, defaults to null -- @param parent_id The parent of this item, defaults to null -- @param is_live The should the revision be set live, defaults to 't'. Requires -- that text is not null or there will be no revision to begin with -- @param template_id The id of the new template. A new id will be allocated if this -- parameter is null -- @param creation_date As in acs_object.new -- @param creation_ip As in acs_object.new -- @param creation_user As in acs_object.new -- @return The id of the newly created template -- @see {acs_object.new}, {content_item.new}, {content_item.register_template}, -- {content_type.register_template} --*/ name in cr_items.name%TYPE, text in varchar2 default null, parent_id in cr_items.parent_id%TYPE default null, is_live in char default 't', template_id in cr_templates.template_id%TYPE default null, creation_date in acs_objects.creation_date%TYPE default sysdate, creation_user in acs_objects.creation_user%TYPE default null, creation_ip in acs_objects.creation_ip%TYPE default null, package_id in acs_objects.package_id%TYPE default null ) return cr_templates.template_id%TYPE; procedure del ( --/** Deletes the specified template, and unregisters the template from -- all content types and content items. -- Use with caution - this operation cannot be undone. -- @author Karl Goldstein -- @param template_id The id of the template to delete -- @see {acs_object.delete}, {content_item.unregister_template}, -- {content_type.unregister_template}, --*/ template_id in cr_templates.template_id%TYPE ); function is_template ( --/** Determine if an item is a template. -- @author Karl Goldstein -- @param item_id The item id -- @return 't' if the item is a template, 'f' otherwise -- @see {content_template.new} --*/ template_id in cr_templates.template_id%TYPE ) return varchar2; function get_path ( --/** Retrieves the full path to the template, as described in content_item.get_path -- @author Karl Goldstein -- @param template_id The id of the template for which the path is to -- be retrieved -- @param root_folder_id Starts path resolution at this folder -- @return The path to the template, starting with the specified root folder -- @see {content_item.get_path} --*/ template_id in cr_templates.template_id%TYPE, root_folder_id in cr_folders.folder_id%TYPE default c_root_folder_id ) return varchar2; end content_template; / show errors create or replace package body content_template as function get_root_folder return cr_folders.folder_id%TYPE is begin return c_root_folder_id; end get_root_folder; function new ( name in cr_items.name%TYPE, text in varchar2 default null, parent_id in cr_items.parent_id%TYPE default null, is_live in char default 't', template_id in cr_templates.template_id%TYPE default null, creation_date in acs_objects.creation_date%TYPE default sysdate, creation_user in acs_objects.creation_user%TYPE default null, creation_ip in acs_objects.creation_ip%TYPE default null, package_id in acs_objects.package_id%TYPE default null ) return cr_templates.template_id%TYPE is v_template_id cr_templates.template_id%TYPE; v_parent_id cr_items.parent_id%TYPE; v_package_id acs_objects.package_id%TYPE; begin if parent_id is null then v_parent_id := c_root_folder_id; else v_parent_id := parent_id; end if; -- make sure we're allowed to create a template in this folder if content_folder.is_folder(parent_id) = 't' and content_folder.is_registered(parent_id,'content_template') = 'f' then raise_application_error(-20000, 'This folder does not allow templates to be created'); else if package_id is null then v_package_id := acs_object.package_id(v_parent_id); else v_package_id := package_id; end if; v_template_id := content_item.new ( item_id => content_template.new.template_id, name => content_template.new.name, text => content_template.new.text, parent_id => v_parent_id, package_id => v_package_id, content_type => 'content_template', is_live => content_template.new.is_live, creation_date => content_template.new.creation_date, creation_user => content_template.new.creation_user, creation_ip => content_template.new.creation_ip ); insert into cr_templates ( template_id ) values ( v_template_id ); return v_template_id; end if; end new; -- delete all template relations procedure del ( template_id in cr_templates.template_id%TYPE ) is begin delete from cr_type_template_map where template_id = content_template.del.template_id; delete from cr_item_template_map where template_id = content_template.del.template_id; delete from cr_templates where template_id = content_template.del.template_id; content_item.del(content_template.del.template_id); end del; function is_template ( template_id in cr_templates.template_id%TYPE ) return varchar2 is v_ret varchar2(1); begin select 't' into v_ret from cr_templates where template_id = is_template.template_id; return v_ret; exception when no_data_found then return 'f'; end is_template; function get_path ( template_id in cr_templates.template_id%TYPE, root_folder_id in cr_folders.folder_id%TYPE default c_root_folder_id ) return varchar2 is begin return content_item.get_path(template_id, root_folder_id); end get_path; end content_template; / show errors