Advertisement
Guest User

Projects.ts

a guest
Feb 15th, 2023
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.91 KB | None | 0 0
  1. import { CollectionConfig } from "payload/types";
  2. import { isAdmin } from "../access/isAdmin";
  3. import { isAdminOrHasSiteAccess } from "../access/isAdminOrHasSiteAccess";
  4. import { isLoggedIn } from "../access/isLoggedIn";
  5.  
  6. export const Projects: CollectionConfig = {
  7. slug: "projects",
  8. admin: {
  9. useAsTitle: "title",
  10. group: "Content",
  11. },
  12. versions: {
  13. drafts: true,
  14. },
  15. access: {
  16. // Anyone logged in can create
  17. create: isLoggedIn,
  18. // Only admins or editors with site access can update
  19. update: isAdminOrHasSiteAccess(),
  20. // Admins or editors with site access can read,
  21. // otherwise users not logged in can only read published
  22. read: () => true,
  23. // Only admins can delete
  24. delete: isAdmin,
  25. },
  26. fields: [
  27. {
  28. name: "title",
  29. type: "text",
  30. required: true,
  31. },
  32. {
  33. name: "slug",
  34. type: "text",
  35. required: true,
  36. },
  37. {
  38. name: "price",
  39. type: "number",
  40. required: true,
  41. },
  42. {
  43. name: "numberOfBedrooms",
  44. type: "number",
  45. },
  46. {
  47. name: "headerImage",
  48. label: "Header Image (Size: 1922x656)",
  49. type: "upload",
  50. relationTo: "files",
  51. required: true,
  52. },
  53. {
  54. name: "logo",
  55. label: "Logo (Height: 100px)",
  56. type: "upload",
  57. relationTo: "files",
  58. required: true,
  59. },
  60. {
  61. name: "projectType",
  62. type: "relationship",
  63. relationTo: "project-categories",
  64. required: true,
  65. },
  66. {
  67. name: "propertyType",
  68. type: "relationship",
  69. relationTo: "property-categories",
  70. required: false,
  71. },
  72. {
  73. name: "location",
  74. type: "relationship",
  75. relationTo: "location-categories",
  76. required: true,
  77. },
  78. {
  79. name: "subLocation",
  80. type: "relationship",
  81. relationTo: "sub-location-categories",
  82. },
  83. {
  84. name: "size",
  85. label: "Size (sqm)",
  86. type: "number",
  87. required: true,
  88. },
  89. {
  90. name: "coverImage",
  91. label: "Cover Image (Size: 1920x833)",
  92. type: "upload",
  93. relationTo: "files",
  94. required: true,
  95. },
  96. {
  97. name: "shortDescription",
  98. type: "text",
  99. required: true,
  100. },
  101. {
  102. name: "overview",
  103. type: "richText",
  104. required: true,
  105. },
  106. {
  107. name: "locationTab",
  108. type: "richText",
  109. required: true,
  110. },
  111. {
  112. name: "mapImage",
  113. type: "upload",
  114. relationTo: "files",
  115. required: true,
  116. },
  117. {
  118. name: "site",
  119. type: "relationship",
  120. relationTo: "sites",
  121. required: true,
  122. // If user is not admin, set the site by default
  123. // to the first site that they have access to
  124. defaultValue: ({ user }) => {
  125. if (!user.roles.includes("admin") && user.sites?.[0]) {
  126. return user.sites[0];
  127. }
  128. },
  129. },
  130. ],
  131. };
  132.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement