Administrator's Guide
Dashboard
Overview
Administration dashboard gives you an overview of all the activities you can do using the JomHoliday extension. It provides you a view of all the menu items, system configuration checks, license information, and links to the documentation.
Screen 1: Dashboard screen
Menu Items
The following table provides an explanation about different menu items available:
Dashboard |
Home or dashboard for the JomHoliday extension |
Listings |
Shows the Listings administration screen |
Categories |
Shows the Categories administration screen |
Custom Fields |
Shows the Custom Fields administration screen |
Resource Custom Fields | Shows the Resource Custom Fields administration screen |
Addresses |
Shows the Address administration screen |
Business Types | Shows the Business Types administration screen |
Bookings | Shows the Bookings administration screen |
Booking Addons | Shows the Booking addons administration screen |
Membership Plans |
Shows the Membership Plans administration screen |
Messages |
Shows the messages received |
Reviews: Categories |
Shows the Reviews administration screen to add review parameters for each category. For example, Quality, Customer Service, and so on. |
Reviews: Recommended |
Shows screen to add recommended audience for the listing or category. For example, For young people, Gizmodo, and so on. |
Documentation |
Access the JomHoliday documentation. |
System Configuration Checks
Any configuration problems or current configuration status is displayed in this area as shown in the following screen:
Screen 3: System configuration checks area
Address
Overview
The Address feature, as the name suggests, lets you provide the country, region and city for the respective product listing. The advantage with the Address field in Extensions is that after you configure a particular address, it is shared across various components in the Comdev extension.
Based on the depth of levels you want, such as the continent as Europe, country as the UK and region as Wales, you can configure the Address tree to have unlimited levels. The Address feature provides multilingual support. This means you can specify different names based on your language preference. For more information, see Languages.
Creating A New Address
The following image shows the Address Feature screen. To add an address, click Components > Comdev > Address. Click New to create a new address.
Screen 1: New Address screen
Let us understand each of the buttons seen on the screen using the following table.
New |
Creates a new Address entry. You must create separate entries for each level of depth that you need. |
Edit |
Provides the edit mode to make changes to the existing level or titles created. |
Publish |
Publishes the created address entry. |
Unpublish |
Removes the entry from the list of published address entries |
Archive |
Archives address entries that are not used anymore. |
Trash |
Deletes the address entry that is not required anymore. |
Rebuild |
Refreshes to incorporate the changes made to the entries in the Address feature. |
Address Structure
The structure of the Address tree is maintained as follows in our example. You can create any structure as per your requirement.
<Continent>
-- <Country>
-- – <Region>
-- – -- <City>
Editing address entries
If you want to edit existing entries, you can either click the entry from the Address screen or select the check box next to the entry, and then click Edit.
After you click the required entry that you need to edit, you can change the configurations based on the options as seen in the following table.
Title |
Custom Address Field |
Alias |
URL alias for “SEF/SEO” URL |
Parent |
Select the parent address entry |
Text box |
Provide a description about the entry. You can format the text using the formatting options in the text box. You can also insert images or links to URLs for more information. |
Category Image |
Upload an address image |
Publishing tab
After you have provided the above information, you can provide the publishing information in the Publishing tab as seen in the following image.
You can change the values for the given options using the following table.
Status |
Based on the status seen here, the visibility changes as follows:
|
Access |
Access level for site users is as follows:
|
Language |
Select the language for the address entry. |
ID |
Address ID, which can be used in modules, plugins and menus. |
Created by |
User name who created the entry. |
Created Date |
Date when the entry was created. |
Modified by |
User name who modified the entry. |
Modified Date |
Date when the entry was modified. |
Metadata tab
The metadata tab is used to provide metadata information for a particular address entry. The options for this tab can be seen as shown in the following image.
You can change the values for the given options using the following table.
Meta Description |
Meta-description for search-engine listings. |
Meta Keywords |
Meta Keywords for the search-engine |
Author |
Content author metadata. |
Robots |
Robots instructions:
|
Categories
Overview
Categories allow the site owner to categorize listings into appropriate sections. Extension categories are independent from the Joomla category system. Nested categories (sub-categories) are supported in Extension. Component comes with a category named "UNCATEGORIZED", which is the default setting. This category holds listing items that are not attached to any category (same function as the default Joomla system).
You can create a categories menu link under Menus using information provided here. Ensure that for creating this link you use the Item menu type as Categories.
Creating A New Category
The following image shows the Category Feature screen.
Screen 1: Adding a new category
Let us understand each of the buttons seen on the screen using the following table.
New |
Creates a new Category entry. You must create separate entries for each level of depth that you need. |
Edit |
Provides the edit mode to make changes to the existing level or titles created. |
Publish |
Publishes the created category entry. |
Unpublish |
Removes the entry from the list of published category entries |
Archive |
Archives category entries that are not used anymore. |
Trash |
Deletes the category entry that is not required anymore. |
Rebuild |
Refreshes to incorporate the changes made to the entries in the Category feature. |
Editing category entries
If you want to edit existing entries, you can either click the entry from the Category screen or select the check box next to the entry, and then click Edit.
New Category tab
The New Category tab is seen as shown in the following image:
Screen 2: New Category tab
After you click the required entry that you need to edit, you can change the configurations based on the options as seen in the following table.
Title |
Custom Category Field |
Alias |
URL alias for “SEF/SEO” URL |
Parent |
Select the parent category entry |
Text box |
Provide a description about the entry. You can format the text using the formatting options in the text box. You can also insert images or links to URLs for more information. |
Toggle editor |
Toggle between a rich text box with formatting options and plain text box. |
Category Image |
Upload a category image |
Publishing tab
After you have provided the above information, you can provide the publishing information in the Publishing as seen in the following image.
You can change the values for the given options using the following table.
Status |
Based on the status seen here, the visibility changes as follows:
|
Access |
Access level for site users is as follows:
|
Language |
Select the language for the category entry. |
ID |
Category ID, which can be used in modules, plugins and menus. |
Created by |
User name who created the entry. |
Created Date |
Date when the entry was created. |
Modified by |
User name who modified the entry. |
Modified Date |
Date when the entry was modified. |
Metadata tab
The metadata tab is used to provide metadata information for a particular category entry. The options for this tab can be seen as shown in the following image.
You can change the values for the given options using the following table.
Meta Description |
Meta-description for search-engine listings. |
Meta Keywords |
Meta Keywords for the search-engine |
Author |
Content author metadata. |
Robots |
Robots instructions:
|
Custom Fields
Overview
Custom fields are a powerful tool to build content. We provide a variety of field types with the ability to outline into groups. Each field can be assigned into a single category or all categories.
Creating a Custom Field
Creating a custom field involves setting certain options. To create a custom field, click New as shown in the following image.
Screen 1: Custom Field screen
The following table explains the different options available on the screen.
New |
Creates a new Custom Field. |
Edit |
Provides the edit mode to make changes to the existing level or titles created. |
Publish |
Publishes the created custom field. |
Unpublish |
Removes the entry from the list of published custom fields. |
Archive |
Archives custom fields that are not used anymore. |
Trash |
Deletes the custom fields that are not required anymore. |
Options |
Navigates to the Extension options screen. |
Editing Custom Fields
If you want to edit existing entries, you can either click the entry from the Custom Fields screen or select the checkbox next to the entry, and then click Edit.
Custom Field Edit
After you click the required entry that you need to edit, you can change the configurations for the fields as shown in the following image.
Screen 2: Custom Field Edit tab
The following table explains the different options seen on the screen:
Custom Field Edit |
Title |
Title for the Custom Field. |
Alias |
URL alias for “SEF/SEO” URL. |
|
Order |
Provide a value from 1 onwards. The lowest value will appear on the top. |
|
Field Required? |
Enable whether to make the field required. |
|
Category |
Category where the Custom Field will be published. When you select a custom field for a particular category, it is visible only for that category. While creating a listing if you select the said category and save, the custom field is available only then.
|
|
Field Type |
Set the Field Type for the Custom Field. For more information, see the Field Type Table. |
|
Field Database Type |
Set the field type, needed for database settings.
|
|
Field Group |
There are 5 custom field groups. Custom fields are grouped into groups. It has many advantages, one of them is display purposes. There are few groups available:
JomEstate, JomEvents only
Groups are static and cannot be created.
Paid groups are related to the membership plans that are applied to custom fields. Paid Items are displayed in the Items list, while the Paid Item is displayed in an Item (detailed) view.
|
|
Field Can Be Searched |
Enable to make the field values searchable. This setting applies only for the Search Module -> Layout Filter.
|
|
Field Search Type |
Provide the type of search option to include:
Depending on the Field search type you select, the search criteria field will be displayed in the search module – layout side search. This field is functional when the Field Type is selected as Input and Field can be searched set to Yes
|
|
Minimum Value |
When, as an example, the Range Dropdown option is selected, you can select the range between which the options can be selected. For example, for Price range between X and Y, with incremental steps of 2, you can set x value in this field. |
|
Maximum Value |
Set the Y value for the range in this field. |
|
Steps |
Define the incremental steps. For example, for increments of x+2, provide the value as 2. |
|
Custom Field Template |
Custom fields have own templates that can be used and customized. There are 3 templates available:
If you would like to create and customize your own templates, see the Developer Guide. |
|
ID |
This field is auto - generated. |
|
Custom fields values area |
Add new |
If the field type is selected to hold multiple values, this button lets you create the multiple values. |
Delete |
Delete the value. |
Custom Field Values
This area lets you create values when the field type requires multiple options to be provided.
For custom fields that can have values, to add multiple values, navigate to the custom fields listing screen. Click the icon next to the field where you want to add values as shown in the following image.
Screen 3: Adding values to custom fields area
Here, the Field Type is selected as Checkbox and the Field Database Type has been stated as String. This means the Custom fields value area should provide options that can be seen when editing listing and displayed on the component front page. Hence, the Sample Values are provided in this area as Street, Garage, Underground. The following screen shows the values added at the back end. Click Delete to delete the entry.
Screen 4: Values added to custom field area
The following image shows how the field looks on the add listings page.
Screen 5: Custom Field as seen on new listing page
The custom field is seen on the listings page as shown in the following image:
Screen 6: Custom Field as seen on published listing page
Field Types
With Extension extension, you get several field types that you can create based on your requirement. The following image shows the available field types.
Screen 7: Field Types
The following table explains the different options seen on the screen.
Type |
Multiple select |
Multiple Values |
Description |
Radio button |
No |
Yes |
Standard radio button with multiple values |
Checkbox |
Yes |
Yes |
Standard check boxes with multiple values |
Dropdown |
No |
Yes |
Dropdown (select) field with multiple values |
Multiple Select |
Yes |
Yes |
Select box with multiple values |
Input |
No |
No |
Single text box |
Web Address |
No |
No |
Single text box for URL, it will display as the link in the front page |
|
No |
No |
Single text box for email |
Text |
No |
No |
Text area |
Date Time |
No |
No |
Select a date and time from the Calendar icon on screen. |
Date |
No |
No |
Select a date from the Calendar icon on screen. |
Editor textarea |
No |
No |
Creates a rich text editor box, it can be combined with Tabs group. |
Publishing tab
After you have provided the above information, you can provide the publishing information in the Publishing tab.
You can change the values for the given options using the following table.
Status |
Based on the status seen here, the visibility changes as follows:
|
Language |
Select the language for the address entry. To create a custom field that applies to a particular language, you need to select the appropriate language from the drop down. For each language that you want it to appear for, create a separate entry.
|
Created Date |
Date when the entry was created. |
Start Publishing |
Date when publishing needs to start in case of limited viewing of the field. |
Finish Publishing |
Date when publishing needs to stop in case of limited viewing of the field. |
Modified Date |
Date when the entry was modified. |
JomEstate custom fields: Beds, Baths, Garage
For custom fields such as Bed, Bath, and Garage, icons are displayed alongside. To change the style css for these icons, edit the jomestate.css file located in the components/com_jomestate/assets/css folder. These icons are only available for the single language. If the site is multilingual than additional suffixes are added, therefore additional styles needs to be created.
.beds .jd-lab-horizontal-float-icon {background: url("../images/beds.png") 0 50% no-repeat;}
.baths .jd-lab-horizontal-float-icon {background: url("../images/baths.png") 0 50% no-repeat;}
.garage .jd-lab-horizontal-float-icon {background: url("../images/car.png") 0 50% no-repeat;}
Listings
Overview
Listings are nothing but the product listings that you want to create in the directory. Each listing is attached to a category. They are created in the same manner as Joomla articles, but are not related to Joomla articles in definition.
Creating A New Listing
The following image shows the Listings screen.
Screen 1: Listing screen
The following table explains the different options seen on the screen.
New |
Creates a new Address entry. You must create separate entries for each level of depth that you need. |
Edit |
Provides the edit mode to make changes to the existing level or titles created. |
Publish |
Publishes the created address entry. |
Unpublish |
Removes the entry from the list of published address entries |
Archive |
Archives address entries that are not used anymore. |
Trash |
Deletes the address entry that is not required anymore. |
Options | Displays the configuration screen for the JomOffers extension. |
Edit Listing
If you want to edit existing entries, you can either click the entry from the Listings screen or select the checkbox next to the entry, and then click Edit.
Edit Listing tab
This tab provides options to add title, description, select category, and other options for the Listing as seen in the following image:
Screen 2: Edit Listing screen
The following table shows the options available:
Edit Listing area |
Title |
Title for the Listing. |
Alias |
URL alias for “SEF/SEO” URL. |
|
Category |
Category where the listing will be published. |
|
Work Type | Work location where the listing needs services for. | |
Regular Auction | If set to Yes than Bids auction type is created otherwise Reverse Auction | |
Price/Budget | Budget for the services required or Bid product price |
|
Select Company | Select the company that you need specific offers from. | |
Ref Number - REF | Reference number for a specific listing. | |
Days Published | Number of days for which the listing remains active. | |
Text Area |
Provide a description for the listing. You can create a short description as well a long description. ![]() In the above image, the highlighted tag appears when you click Read More. Any content above the tag is the short description, while the entire content is the long description. Also, note that if there is no content after the Read More tag, the event description will be blank when users view the listing. Ensure that you have content after the Read More tag.
|
|
Article Button |
Click to select a relevant article. If an article is provided, it can be seen under the Details tab in the listing. |
|
Page Break Button |
Insert a page break in the displayed text. |
|
Address area |
Address |
Address of the listing |
Street, House No. |
Street and house number of the listing - If both Address and Full Address specified, map location will position automatically. |
|
Location area |
Maps latitude |
It utilizes the GEO-location based on Google Maps. Provide the latitude information for the location mapping. |
Maps longitude |
The information provided in this field is used to map the exact location. It utilizes the GEO-location based on Google Maps. Provide the longitude information for the location mapping. |
|
Maps Search |
Search for a specific location. Type in the location and press Enter to go to the exact location. |
|
Sidebar |
Featured |
Enable to make the listing appear as featured listing. |
Approved |
Enable to approve the listing. Listing will not be published. |
|
Language |
Select the language for which the listing needs to appear for. For multiple languages, you must create separate entries for each language. |
|
Status |
Select the required status.
|
|
Created by |
Select the user who created the listing. |
|
Access |
Provide the access level for the listing.
|
|
Date created |
Select the date when the listing was created. You can select a future date for publishing the listing as well. |
|
Publish Up |
Select a date when you want to publish the listing. Here too, you can schedule to post the listing at a future date. |
|
Publish down |
Select a date when the listing should stop being published. |
|
Modified Date |
Select a date when the listing was modified. |
|
Tags |
Provide the tags for the listing. Tags are integrated and maintained with Joomla Tags Component. |
|
ID |
This is an auto-generated field. |
Understanding the Location area in Edit listing tab
Let us understand how to provide the address and Street/House No for providing the exact locations on the map. When you provide the address, street and House No. in the backend when creating listings, the location position automatically. If the House No. is not provided, additional location fields needs to be used.
Mapping using longitudes and latitudes
If you provide the latitudes and longitudes, and the Maps Search setting is left blank, the location mapping is done based on these parameters as shown in the following image.
Screen 3: Map using longitudes and latitudes values
Mapping with Map Search values
If the Map Search field has a value provided to it, it takes precedence as shown in the following image. If the Map Search field value is given as “London”, the location will map to this location.
Screen 4: Map using Map Search Field values
Custom Fields tab
This tab includes all the custom fields created for a particular category. If the custom field is not applied to a specific category, it can be seen for all categories when creating a listing. The following image shows the Custom Fields tab screen.
Screen 5: Custom Fields tab
For more information about creating custom fields, see Custom Fields.
Images tab
This tab includes information about images and videos attached to the listing. Before you can add images to the listing, you must save your listing at least once. This ensure that all the other data you have filled for the listing does not disappear after the images are added.
The Images tab can be seen as shown in the following image:
Screen 6: Images tab
Provide the options as shown in the following table.
Images |
Add file area |
Add Files |
Click to select the image that needs to be uploaded. |
Drag & Drop Files Here |
Drag a bunch of images to this area to upload multiple images. |
||
Upload Into |
Select which category the image falls under:
|
||
Add available images & attachments |
Click to add already uploaded images and attachments to this listing. |
||
Images area |
Editing an Image |
Click the Click the |
|
Attachments area |
Click the Click the Attachments are detected automatically based on file extension that’s are allowed in Configuration . |
||
Video |
YouTube Video |
Provide the YouTube video URL in this field as shown in the following image. |
Cron job for BIDS - Regular auctions
For regular auctions a cron job needs to be added to clear auctions which have been finished, interval should be set to 1 or 5 minutes:
curl -s 'http://extdev.comdev.eu/index.php?option=com_jomoffers&task=auction.check'
Instruction how to set cron job for Plesk panel can be found here:
Work Type
Overview
Work Type for Reverse Actions defines the location where you want to avail the services required in the listing. For example, for a service such as gardening, the Work Type would be On Place or Remote. But, in case of accountant services, the Work Type would be In House.
Creating a Work Type
Creating a custom field involves setting certain options. To create a custom field, click New as shown in the following image.
Screen 1: Work Type screen
The following table explains the different options available on the screen.
New |
Creates a new Custom Field. |
Edit |
Provides the edit mode to make changes to the existing level or titles created. |
Publish |
Publishes the created custom field. |
Unpublish |
Removes the entry from the list of published custom fields. |
Archive |
Archives custom fields that are not used anymore. |
Trash |
Deletes the custom fields that are not required anymore. |
Rebuild |
Refreshes to incorporate the changes made to the entries in the Custom Field feature. |
Options | Displays the configuration screen for the JomOffers extension. |
Editing a Work Type
If you want to edit existing entries, you can either click the entry from the Work Type screen or select the checkbox next to the entry, and then click Edit.
Work Type Edit
After you click the required entry that you need to edit, you can change the configurations for the fields as shown in the following image.
Screen 2: New Category tab screen
After you click the required entry that you need to edit, you can change the configurations based on the options as seen in the following table.
Title |
Custom Address Field |
Alias |
URL alias for “SEF/SEO” URL |
Parent |
Select the parent address entry |
Text box |
Provide a description about the entry. You can format the text using the formatting options in the text box. You can also insert images or links to URLs for more information. |
Category Image |
Upload an address image |
Publishing tab
After you have provided the above information, you can provide the publishing information in the Publishing tab as seen in the following image.
You can change the values for the given options using the following table.
Status |
Based on the status seen here, the visibility changes as follows:
|
Access |
Access level for site users is as follows:
|
Language |
Select the language for the address entry. |
ID |
Address ID, which can be used in modules, plugins and menus. |
Created by |
User name who created the entry. |
Created Date |
Date when the entry was created. |
Offers
Overview
For every listing made, contractors or companies can provide an offer. This offer includes information such as pricing, time taken to complete the task and description about the services provided.
Making an Offer
The following image shows the offer screen.
Screen 1: Making an offer
Let us understand each of the buttons seen on the screen using the following table.
Title |
Title of the offer |
Price |
Price of services |
Price Negotiable |
Slide to select whether price is negotiable |
Time to Complete (days) |
Duration taken to complete the services |
Description | Detailed description of the services offered. |
Editing the Offers
The following screen shows the offers made for all the listings available.
Screen 2: Offers for all listings
If you want to edit existing entries, you can either click the entry from the Offers screen or select the check box next to the entry, and then click Edit.
Screen 3: Editing an offer
After you click the required entry that you need to edit, you can change the configurations based on the options as seen in the following table.
Title |
Title of the offer made. |
Price |
Price mentioned by the contractor for the services offered. |
Price Negotiable |
Enabled if price is negotiable. |
Status |
Edit status, if required from the following options. By default, every offer made is in the Published state.
|
Offer Status |
After reviewing the offer, set the state of the offer to one of the following states.
|
Time to Complete (days) | Number of days to complete the services required. |
ID | Offer ID, which can be used in modules, plugins and menus. |
Created by | User name who created the entry. |
Description | Description about the serviced offered. |
Membership
Overview
Memberships in Extension are required to set user group level based on the monthly/Yearly pay plan the user selects. Using membership plans, you can decide how much to charge a user and how many listings a user can make for a particular membership plan.
Create a new Membership Plan
Click Components > Extension > Membership Plans > New to create a new membership plan as shown in the following image:
Screen 1: Create new membership plan
Edit Membership Plan
If you want to edit existing entries, you can either click the entry from the Membership screen or select the check box next to the entry, and then click Edit.
The following image shows the Edit Plan screen.
Screen 2: Edit Plan screen
The following table explains the different options seen.
Name |
Provide a name for the membership plan. |
Number of Listings |
Provide the number of listings the users in the plan can create. |
Group ID |
Select the Joomla user group ID for the plan. It is recommended that you create your membership under the Registered group.
|
Number of Images |
Provide the number of images the users in the plan can add. |
Price Monthly |
Provide the monthly charge for the plan. |
Price Annually |
Provide the annual charge for the plan. |
Best Value |
Best value badge, that shows in Front Admin (informative) |
No of Premium Listings |
Provide the number of premium listings the users in the plan can create. |
Attachments |
Enable to allow users to add attachments to listings. |
Video |
Enable to allow users to add Video link to the listings. |
Custom Fields |
Enable custom fields for particular plan. Custom field needs to be assign into Paid Groups to be shown here.
|
ID |
This field is auto generated. |
Adding paid custom fields to the Membership plans
For adding a custom field to the membership plan, the field group needs to be set to Paid item. Click Extension > Custom Fields. Click the field you want to add to the membership plan as a paid item. Change the Field Group to Paid item for the Item view and Paid items for the Items view as shown in the following image:
Screen 4: Adding a paid custom field
This field needs to be enabled in the membership plan as shown in the following image.
Screen 5: Enabling the paid custom field
This field can be seen in the front admin under the membership plan as follows:
Screen 6: Viewing the paid custom field
Membership expiry email configurations
Before the membership expires, an email can be sent to a user that informs them about his membership nearing expiration. The setting can be seen in the following image:
Screen 3: Configure expiry email field
Cron Setting for Membership expiry check
Under your hosting panel a link needs to be added that launches a script. This script checks all users’ membership and sends an email if membership is about to expire:
curl -sS 'http://yourdomain.com?option=com_jomdirectory&task=expiry.send'
or
wget -q -O /dev/null 'http://yourdomain.com?option=com_jomdirectory&task=expiry.send'
If you are unaware about where the cron setting needs to configured in the hosting panel, contact your hosting support center.
Ensure that the script is launched every day at a particular time consistently.
Set Single User expiry date and group
To set plan expiry and attach a group for each user, do the following:
- Click Users > User Manager.
- Click the user for whom you want to set the membership expiry.
- Click the Additional Options tab.
- Provide the expiration date in the Plan expiry field.
- Click the Assigned User Groups tab.
- Select the check box next to the group you want to attach the user to for a particular membership plan as shown in the following image.
- Click Save.
For more information about membership expiration setting, see Configuration documentation.
Creating a new Group for Membership Plans
In order to add users to groups for membership plans, you must create a super group named JomOffers. Then, under it you must create groups for each of your membership plan. These groups are used to provide Group ID when creating a membership plan. Users created using User Manager can be linked to each of these membership plan groups.
To create the JomOffers group and other groups, do the following:
- Click Users > Groups > Add New Group.
- Provide a name for the group. We need to create JomOffers group before creating other groups. So, provide the name as JomOffers
User Permissions based on groups
For the users to access Front Admin certain user permissions need to be granted. These settings need to be done in the JomOffers and Comdev Options.
To provide user permissions for JomOffers, do the following:
- Click Components > JomOffers
- Click Options from the right-hand side of the screen.
- Click Permissions.
- Provide the permissions as shown in the following image.
- Click Save.
User permissions also need to be set for Comdev extension as explained here.
- Click Components > Comdev.
- Click Options from the right-hand side of the screen.
- Click Comdev.
- Provide the permissions as shown in the following image.
- Click Save.
Users, which belongs to Joomla group JomOffers, will now have access to Front Admin.
If Permissions for the Comdev component are not set, users would not be able to upload images. A 500 error would show that permissions are denied.